Commit 2e4cc98d authored by Seblu's avatar Seblu
Browse files

Implement tag ignoring

parent 09ca231a
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -203,24 +203,24 @@ class RemoteCommand(OptionCommand):
        '''Return a set of needed remote functions'''
        raise NotImplementedError

    def print_objects(self, objectlist, ignore=None, index=False):
    def print_objects(self, objectlist, index=None):
        '''Trivial objectlist printing of tag'''
        if objectlist is None:
            return
        # get default index from local options
        _order = objectlist.get("order", None)
        for (i,o) in enumerate(objectlist["objects"]):
            if index:
            if index or (index is None and self.options.index):
                self.printer.out("[%s] "%i, nl="")
            self.print_tags(o, order=_order, ignore=ignore)
            self.print_tags(o, order=_order)

    def print_tags(self, taglist, order=None, ignore=None):
    def print_tags(self, taglist, order=None):
        '''Display a tag with tagdisplay settings'''
        ignore = () if ignore is None else ignore
        order = () if order is None else order
        # copy dict to show
        tl = taglist.copy()
        # remove ignore tags
        for tn in ignore:
        for tn in self.options.ignore:
            tl.pop(tn, None)
        # list to print
        pls = []
@@ -258,6 +258,8 @@ class TqlCommand(RemoteCommand):
        # tql printer option
        self.add_option("--print-tql", action="store_true", dest="tql_print",
                        help="Print TQL before sending to server")
        self.add_option("-I", "--ignore-tag", action="append", dest="ignore", default=[],
                        help="Don't display a tag")
        # set tagdisplay stuff
        self.tdr = self.cli.tagdisplay.resolve
        self.tdc = self.cli.tagdisplay.color
+29 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ class Command_list(TqlCommand):
        elif self.options.vertical:
            self.list_vertical(objs)
        else:
            self.print_objects(objs, index=self.options.index)
            self.print_objects(objs)

    def remote_functions(self):
        return set(("list",))
@@ -53,6 +53,13 @@ class Command_list(TqlCommand):
    def list_align(self, objs):
        '''Listing line aligned'''
        term_height, term_width = self.printer.get_term_size()
        # remove ignored tags
        for tag in self.options.ignore:
            if tag in objs["order"]:
                objs["order"].remove(tag)
            for row in objs["objects"]:
                if tag in row:
                    row.pop(tag)
        # get max size by tag
        tags = dict()
        for o in objs["objects"]:
@@ -110,6 +117,13 @@ class Command_list(TqlCommand):
    def list_table(self, objs):
        '''Listing table style'''
        term_height, term_width = self.printer.get_term_size()
        # remove ignored tags
        for tag in self.options.ignore:
            if tag in objs["order"]:
                objs["order"].remove(tag)
            for row in objs["objects"]:
                if tag in row:
                    row.pop(tag)
        # get max size by tag
        tags = dict()
        for o in objs["objects"]:
@@ -167,6 +181,13 @@ class Command_list(TqlCommand):
        term_height, term_width = self.printer.get_term_size()
        # set margin for tags
        margin = 3
        # remove ignored tags
        for tag in self.options.ignore:
            if tag in objs["order"]:
                objs["order"].remove(tag)
            for row in objs["objects"]:
                if tag in row:
                    row.pop(tag)
        # build full tag order list:
        tags = set((t for o in objs['objects'] for t in o.keys()))
        order = [t for t in objs.get("order", []) if t in tags]
@@ -204,6 +225,13 @@ class Command_list(TqlCommand):
        # 10 seem to be a good minimum value:
        if term_width < 10:
            raise cmdError("term width is too small")
        # remove ignored tags
        for tag in self.options.ignore:
            if tag in objs["order"]:
                objs["order"].remove(tag)
            for row in objs["objects"]:
                if tag in row:
                    row.pop(tag)
        # calculate the size of the marge, the taken value is equal to the
        # maximum id length, capped to the 1/3 of the terminal width:
        list_id = [len(o['id']) for o in objs['objects'] if len(o['id']) < term_width / 3]