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:
record_dict['keys'] = [pubkey]
if hasattr(options, 'slices') and options.slices:
record_dict['slices'] = options.slices
- if hasattr(options, 'researchers') and options.researchers:
+ if hasattr(options, 'researchers') and options.researchers is not None:
record_dict['researcher'] = options.researchers
if hasattr(options, 'email') and options.email:
record_dict['email'] = options.email
parser.add_option('-s', '--slices', dest='slices', metavar='<slices>', help='Set/replace slice xrns',
default='', type="str", action='callback', callback=optparse_listvalue_callback)
parser.add_option('-r', '--researchers', dest='researchers', metavar='<researchers>',
- help='Set/replace slice researchers', default='', type="str", action='callback',
+ help='Set/replace slice researchers - use -r none to reset', default='', type="str", action='callback',
callback=optparse_listvalue_callback)
parser.add_option('-p', '--pis', dest='pis', metavar='<PIs>', help='Set/replace Principal Investigators/Project Managers',
default='', type="str", action='callback', callback=optparse_listvalue_callback)