git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge Master in geni-v3 conflict resolution
[sfa.git]
/
sfa
/
storage
/
record.py
diff --git
a/sfa/storage/record.py
b/sfa/storage/record.py
index
ad1c8c7
..
812efde
100644
(file)
--- a/
sfa/storage/record.py
+++ b/
sfa/storage/record.py
@@
-33,9
+33,17
@@
class Record:
# fallback
return "** undef_datetime **"
# fallback
return "** undef_datetime **"
- def todict (self):
+ # it may be important to exclude relationships, which fortunately
+ #
+ def todict (self, exclude_types=[]):
d=self.__dict__
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):
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()
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':
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':
elif format == 'xml':
print self.save_as_xml()
elif format == 'simple':
@@
-76,11
+84,13
@@
class Record:
else:
raise Exception, "Invalid format %s" % format
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
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
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:"
# 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:
elif attrib_name in ['date created', 'last updated']:
print " %s: %s" % (attrib_name, self.date_repr(attrib_name))
else: