sfi show shows the record sorted by keyname
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 1 Jun 2012 12:50:21 +0000 (14:50 +0200)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 1 Jun 2012 12:50:21 +0000 (14:50 +0200)
sfa/client/sfi.py
sfa/storage/record.py

index a221b4b..6b0934d 100644 (file)
@@ -98,7 +98,7 @@ def display_records(recordList, dump=False):
 
 def display_record(record, dump=False):
     if dump:
-        record.dump()
+        record.dump(sort=True)
     else:
         info = record.getdict()
         print "%s (%s)" % (info['hrn'], info['type'])
@@ -823,7 +823,7 @@ or version information about sfi itself
             self.logger.error("No record of type %s"% options.type)
         records = [ Record(dict=record_dict) for record_dict in record_dicts ]
         for record in records:
-            if (options.format == "text"):      record.dump()  
+            if (options.format == "text"):      record.dump(sort=True)  
             else:                               print record.save_as_xml() 
         if options.file:
             save_records_to_file(options.file, record_dicts, options.fileformat)
index ad1c8c7..f3aa8ee 100644 (file)
@@ -62,13 +62,13 @@ class Record:
         xml_record.parse_dict (input_dict)
         return xml_record.toxml()
 
-    def dump(self, format=None, dump_parents=False):
+    def dump(self, format=None, dump_parents=False, sort=False):
         if not format:
             format = 'text'
         else:
             format = format.lower()
         if format == 'text':
-            self.dump_text(dump_parents)
+            self.dump_text(dump_parents,sort=sort)
         elif format == 'xml':
             print self.save_as_xml()
         elif format == 'simple':
@@ -76,11 +76,13 @@ class Record:
         else:
             raise Exception, "Invalid format %s" % format
 
-    def dump_text(self, dump_parents=False):
-        print "".join(['=' for i in range(40)])
+    def dump_text(self, dump_parents=False, sort=False):
+        print 40*'='
         print "RECORD"
         # print remaining fields
-        for attrib_name in self.fields():
+        fields=self.fields()
+        if sort: fields.sort()
+        for attrib_name in fields:
             attrib = getattr(self, attrib_name)
             # skip internals
             if attrib_name.startswith('_'):     continue