Commit acb3be2c authored by Antoine Millet's avatar Antoine Millet
Browse files

Added reporting for addtag, deltag, close, declose.

parent 5bd4f419
Loading
Loading
Loading
Loading
+62 −21
Original line number Diff line number Diff line
@@ -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):
@@ -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):
        '''
@@ -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):
        '''