Allow struct API to work on missing data

This commit is contained in:
Doug Blank 2015-12-30 15:11:27 -05:00
parent 0bfee44e9b
commit 85e4a29af4

View File

@ -175,9 +175,11 @@ class Struct(object):
# get first item in list that matches: # get first item in list that matches:
sublist = [getattr(Struct(item, self.db), attr) for item in self.struct] sublist = [getattr(Struct(item, self.db), attr) for item in self.struct]
return Struct(sublist, self.db) return Struct(sublist, self.db)
else: elif hasattr(self.struct, attr):
# better be a property of the list/tuple/dict/value: # better be a property of the list/tuple/dict/value:
return getattr(self.struct, attr) return getattr(self.struct, attr)
else:
return Struct({}, self.db) # dummy, extending a previous dummy
def __getitem__(self, item): def __getitem__(self, item):
""" """
@ -221,7 +223,7 @@ class Struct(object):
if obj: if obj:
return Struct(obj.to_struct(), self.db) return Struct(obj.to_struct(), self.db)
else: else:
raise AttributeError("missing object: %s" % item) return Struct({}, self.db) # dummy, a db error
elif isinstance(item, (list, tuple)): elif isinstance(item, (list, tuple)):
return Struct(item, self.db) return Struct(item, self.db)
elif isinstance(item, dict) and "_class" in item.keys(): elif isinstance(item, dict) and "_class" in item.keys():