sfi list -v will now show user's email and authority's name as well
[sfa.git] / sfa / client / common.py
index b2e2fde..52ae3ee 100644 (file)
@@ -3,7 +3,13 @@
 def optparse_listvalue_callback(option, opt, value, parser):
     former=getattr(parser.values,option.dest)
     if not former: former=[]
-    setattr(parser.values, option.dest, former+value.split(','))
+    # support for using e.g. sfi update -t slice -x the.slice.hrn -r none
+    # instead of -r '' which is painful and does not pass well through ssh
+    if value.lower()=='none':
+        newvalue=former
+    else:
+        newvalue=former+value.split(',')
+    setattr(parser.values, option.dest, newvalue)
 
 def optparse_dictvalue_callback (option, option_string, value, parser):
     try:
@@ -38,8 +44,12 @@ def terminal_render_default (record,options):
     print "%s (%s)" % (record['hrn'], record['type'])
 def terminal_render_user (record, options):
     print "%s (User)"%record['hrn'],
-    if record.get('reg-pi-authorities',None): print " [PI at %s]"%(" and ".join(record['reg-pi-authorities'])),
-    if record.get('reg-slices',None): print " [IN slices %s]"%(" and ".join(record['reg-slices'])),
+    if options.verbose and record.get('email', None):
+        print "email='{}'".format(record['email']),
+    if record.get('reg-pi-authorities', None):
+        print " [PI at %s]"%(" and ".join(record['reg-pi-authorities'])),
+    if record.get('reg-slices', None):
+        print " [IN slices %s]"%(" and ".join(record['reg-slices'])),
     user_keys=record.get('reg-keys',[])
     if not options.verbose:
         print " [has %s]"%(terminal_render_plural(len(user_keys),"key"))
@@ -49,34 +59,39 @@ def terminal_render_user (record, options):
         
 def terminal_render_slice (record, options):
     print "%s (Slice)"%record['hrn'],
-    if record.get('reg-researchers',None): print " [USERS %s]"%(" and ".join(record['reg-researchers'])),
+    if record.get('reg-researchers', None):
+        print " [USERS %s]"%(" and ".join(record['reg-researchers'])),
 #    print record.keys()
     print ""
 def terminal_render_authority (record, options):
     print "%s (Authority)"%record['hrn'],
-    if record.get('reg-pis',None): print " [PIS %s]"%(" and ".join(record['reg-pis'])),
+    if options.verbose and record.get('name'):
+        print "name='{}'".format(record['name'])
+    if record.get('reg-pis', None):
+        print " [PIS %s]"%(" and ".join(record['reg-pis'])),
     print ""
 def terminal_render_node (record, options):
     print "%s (Node)"%record['hrn']
 
 
 ### used in sfi list
-def terminal_render (records,options):
+def terminal_render (records, options):
     # sort records by type
-    grouped_by_type={}
+    grouped_by_type = {}
     for record in records:
-        type=record['type']
-        if type not in grouped_by_type: grouped_by_type[type]=[]
+        type = record['type']
+        if type not in grouped_by_type:
+            grouped_by_type[type]=[]
         grouped_by_type[type].append(record)
-    group_types=grouped_by_type.keys()
+    group_types = grouped_by_type.keys()
     group_types.sort()
     for type in group_types:
-        group=grouped_by_type[type]
+        group = grouped_by_type[type]
 #        print 20 * '-', type
-        try:    renderer=eval('terminal_render_'+type)
-        except: renderer=terminal_render_default
-        for record in group: renderer(record,options)
-
+        try:    renderer = eval('terminal_render_' + type)
+        except: renderer = terminal_render_default
+        for record in group:
+            renderer(record, options)
 
 ####################
 def filter_records(type, records):