From 747dfb5584e96880fe89754c31777a9ede0efd5c Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Mon, 14 Feb 2011 19:31:29 +0100
Subject: [PATCH] list now use TqlCommand

---
 cccli/command/list.py | 52 +++++++++++++++++++------------------------
 1 file changed, 23 insertions(+), 29 deletions(-)

diff --git a/cccli/command/list.py b/cccli/command/list.py
index c405adb..c99eb00 100644
--- a/cccli/command/list.py
+++ b/cccli/command/list.py
@@ -8,29 +8,22 @@ CloudControl list command
 from cccli.exception import *
 from sjrpc.core.exceptions import *
 from cccli.printer import Printer, color
-from cccli.command.command import OptionCommand
+from cccli.command.command import TqlCommand
 
-class Command_list(OptionCommand):
+class Command_list(TqlCommand):
     '''List objects'''
 
     def __init__(self, cli, argv0):
-        OptionCommand.__init__(self, cli, argv0)
+        TqlCommand.__init__(self, cli, argv0)
         self.set_usage("%prog [options] [tql]")
         self.add_option("-t", action="store_true", dest="table",
                         help="column aligment display")
         self.add_option("-l", action="store_true", dest="align",
                         help="line aligment display")
-        self.add_option("-n", "--no-tagdisplay", action="store_false", dest="tagdisplay", default=True,
-                        help="No tag display system")
+        self.remove_option("-s")
 
     def __call__(self, argv):
         self.parse_args(argv)
-        if self.options.tagdisplay:
-            self.td = self.cli.tagdisplay.resolve
-            self.tc = self.cli.tagdisplay.color
-        else:
-            self.td = lambda tagname, tagvalue: unicode(tagvalue)
-            self.tc = lambda tagname: color["reset"]
         if len(self.args) == 0:
             self.args.append("")
         try:
@@ -49,13 +42,13 @@ class Command_list(OptionCommand):
     def _trivial_list(self, objs):
         '''Trivial listing of tag'''
         for o in objs:
-            id = self.td("id", o.pop("id"))
-            tags = " ".join([ "%s%s:%s%s"%(color["reset"],
+            id = self.tdr("id", o.pop("id"))
+            tags = " ".join([ "%s%s:%s%s"%(self.tdtc(t),
                                            t,
-                                           self.tc(t),
-                                           self.td(t, v))
+                                           self.tdc(t),
+                                           self.tdr(t, v))
                               for (t,v) in o.items() ])
-            self.printer.out("%sid:%s%s %s%s"%(color["reset"], self.tc("id"), id, tags, color["reset"]))
+            self.printer.out("%sid=%s%s %s%s"%(self.tdtc("id"), self.tdc("id"), id, tags, color["reset"]))
 
     def _list_align(self, objs):
         '''Listing line aligned'''
@@ -63,21 +56,21 @@ class Command_list(OptionCommand):
         tags = dict()
         for o in objs:
             for t,v in o.items():
-                tags[t] = max(len(self.td(t, v)), tags.get(t, len(t)))
+                tags[t] = max(len(self.tdr(t, v)), tags.get(t, len(t)))
         # extract id size
         idsize = tags.pop("id")
         # dislay each object by line
         for o in objs:
             # show id tag
-            line = "%sid:%s%s"%(color["reset"],
-                                  self.tc("id"),
-                                  self.td("id", o.pop("id")).ljust(idsize + 2))
+            line = "%sid=%s%s"%(self.tdtc("id"),
+                                self.tdc("id"),
+                                self.tdr("id", o.pop("id")).ljust(idsize + 2))
             # show others tags
             for tagname in sorted(tags.keys()):
-                line += "%s%s:%s%s"%(color["reset"],
+                line += "%s%s:%s%s"%(self.tdtc(tagname),
                                       tagname,
-                                      self.tc(tagname),
-                                      self.td(tagname, o.get(tagname, u"")).ljust(tags[tagname] + 1))
+                                      self.tdc(tagname),
+                                      self.tdr(tagname, o.get(tagname, u"")).ljust(tags[tagname] + 1))
             self.printer.out("%s%s"%(line, color["reset"]))
 
     def _list_table(self, objs):
@@ -86,23 +79,24 @@ class Command_list(OptionCommand):
         tags = dict()
         for o in objs:
             for t,v in o.items():
-                tags[t] = max(len(self.td(t, v)), tags.get(t, len(t)))
+                tags[t] = max(len(self.tdr(t, v)), tags.get(t, len(t)))
         # extract id size
         idsize = tags.pop("id")
         # print id title
-        self.printer.out(color["reset"], nl="")
+        self.printer.out(self.tdtc("id"), nl="")
         self.printer.out("id".ljust(idsize+1), nl=" ")
         # print others titles
         for t,v in tags.items():
+            self.printer.out(self.tdtc(t), nl="")
             self.printer.out(t.ljust(v), nl=" ")
         self.printer.out(color["reset"])
         # print obj
         for obj in objs:
             # print id first
-            self.printer.out(self.tc("id"), nl="")
-            self.printer.out(self.td("id", obj.pop("id")).ljust(idsize+1), nl=" ")
+            self.printer.out(self.tdc("id"), nl="")
+            self.printer.out(self.tdr("id", obj.pop("id")).ljust(idsize+1), nl=" ")
             # print others tags
             for (t, v) in tags.items():
-                self.printer.out(self.tc(t), nl="")
-                self.printer.out(self.td(t, obj.get(t, u"")).ljust(v) ,nl=" ")
+                self.printer.out(self.tdc(t), nl="")
+                self.printer.out(self.tdr(t, obj.get(t, u"")).ljust(v) ,nl=" ")
             self.printer.out(color["reset"])
-- 
GitLab