Loading ccserver/handlers.py +62 −21 Original line number Diff line number Diff line Loading @@ -152,28 +152,51 @@ class ClientHandler(OnlineCCHandler): ''' Add a tag to the account which match the specified query. ''' if tag_name in self._server.RESERVED_TAGS: raise ReservedTagError('Tag %r is read-only' % tag_name) objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if tag_name in tags: errs.warn(obj['id'], 'tag already exists, changed from %r' ' to %r' % (tags[tag_name], tag_value)) else: errs.success(obj['id'], 'tag created') self._server.conf.add_tag(obj['a'], tag_name, tag_value) return errs.get_dict() @listed def deltag(self, conn, query, tag): def deltag(self, conn, query, tag_name): ''' Remove a tag of the account with specified login. ''' if tag_name in self._server.RESERVED_TAGS: raise ReservedTagError('Tag %r is read-only' % tag_name) objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: self._server.conf.remove_tag(obj['a'], tag) errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if tag_name in tags: errs.success(obj['id'], 'tag deleted') else: errs.warn(obj['id'], 'unknown tag') self._server.conf.remove_tag(obj['a'], tag_name) return errs.get_dict() @listed def tags(self, conn, query): Loading Loading @@ -211,12 +234,21 @@ class ClientHandler(OnlineCCHandler): ''' objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if 'close' in tags: errs.warn(obj['id'], 'account already closed') else: errs.success(obj['id'], 'closed') self._server.conf.add_tag(obj['a'], 'close', 'yes') return errs.get_dict() @listed def declose(self, conn, query): ''' Loading @@ -224,12 +256,21 @@ class ClientHandler(OnlineCCHandler): ''' objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if 'close' in tags: errs.success(obj['id'], 'account declosed') else: errs.warn(obj['id'], 'account not closed') self._server.conf.remove_tag(obj['a'], 'close') return errs.get_dict() @listed def kill(self, conn, query): ''' Loading Loading
ccserver/handlers.py +62 −21 Original line number Diff line number Diff line Loading @@ -152,28 +152,51 @@ class ClientHandler(OnlineCCHandler): ''' Add a tag to the account which match the specified query. ''' if tag_name in self._server.RESERVED_TAGS: raise ReservedTagError('Tag %r is read-only' % tag_name) objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if tag_name in tags: errs.warn(obj['id'], 'tag already exists, changed from %r' ' to %r' % (tags[tag_name], tag_value)) else: errs.success(obj['id'], 'tag created') self._server.conf.add_tag(obj['a'], tag_name, tag_value) return errs.get_dict() @listed def deltag(self, conn, query, tag): def deltag(self, conn, query, tag_name): ''' Remove a tag of the account with specified login. ''' if tag_name in self._server.RESERVED_TAGS: raise ReservedTagError('Tag %r is read-only' % tag_name) objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: self._server.conf.remove_tag(obj['a'], tag) errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if tag_name in tags: errs.success(obj['id'], 'tag deleted') else: errs.warn(obj['id'], 'unknown tag') self._server.conf.remove_tag(obj['a'], tag_name) return errs.get_dict() @listed def tags(self, conn, query): Loading Loading @@ -211,12 +234,21 @@ class ClientHandler(OnlineCCHandler): ''' objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if 'close' in tags: errs.warn(obj['id'], 'account already closed') else: errs.success(obj['id'], 'closed') self._server.conf.add_tag(obj['a'], 'close', 'yes') return errs.get_dict() @listed def declose(self, conn, query): ''' Loading @@ -224,12 +256,21 @@ class ClientHandler(OnlineCCHandler): ''' objects = self._server.list(query) errs = Reporter() with self._server.conf: for obj in objects: if 'a' not in obj: raise BadObjectError('All objects must have the "a" tag.') for obj in objects: errs.error(obj['id'], 'not an account') continue tags = self._server.conf.show(obj['a'])['tags'] if 'close' in tags: errs.success(obj['id'], 'account declosed') else: errs.warn(obj['id'], 'account not closed') self._server.conf.remove_tag(obj['a'], 'close') return errs.get_dict() @listed def kill(self, conn, query): ''' Loading