X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fstorage%2Frecord.py;h=812efdeba29a6058ffc8a15b99e46a31861e5739;hb=1cc8e9613cab8b5b22478de369f259e591c54e6d;hp=ad1c8c76cace7e211d649014c70d28fd6d2eb6e1;hpb=951442dd2320e49e39807476ffc248377886c00f;p=sfa.git diff --git a/sfa/storage/record.py b/sfa/storage/record.py index ad1c8c76..812efdeb 100644 --- a/sfa/storage/record.py +++ b/sfa/storage/record.py @@ -33,9 +33,17 @@ class Record: # fallback return "** undef_datetime **" - def todict (self): + # it may be important to exclude relationships, which fortunately + # + def todict (self, exclude_types=[]): d=self.__dict__ - keys=[k for k in d.keys() if not k.startswith('_')] + def exclude (k,v): + if k.startswith('_'): return True + if exclude_types: + for exclude_type in exclude_types: + if isinstance (v,exclude_type): return True + return False + keys=[k for (k,v) in d.items() if not exclude(k,v)] return dict ( [ (k,d[k]) for k in keys ] ) def toxml(self): @@ -62,13 +70,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 +84,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 @@ -89,7 +99,7 @@ class Record: # handle gid if attrib_name == 'gid': print " gid:" - print GID(attrib).dump_string(8, dump_parents) + print GID(string=attrib).dump_string(8, dump_parents) elif attrib_name in ['date created', 'last updated']: print " %s: %s" % (attrib_name, self.date_repr(attrib_name)) else: