9331: Empty handle, bsddb backend and place

This commit is contained in:
Doug Blank 2016-03-25 09:22:58 -04:00
parent e787fac396
commit 162d26d4dc
3 changed files with 5 additions and 7 deletions

View File

@ -1588,7 +1588,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
>>> self.get_from_name_and_handle("Person", "a7ad62365bc652387008") >>> self.get_from_name_and_handle("Person", "a7ad62365bc652387008")
>>> self.get_from_name_and_handle("Media", "c3434653675bcd736f23") >>> self.get_from_name_and_handle("Media", "c3434653675bcd736f23")
""" """
if table_name in self.get_table_func(): if table_name in self.get_table_func() and handle:
return self.get_table_func(table_name,"handle_func")(handle) return self.get_table_func(table_name,"handle_func")(handle)
return None return None

View File

@ -211,15 +211,12 @@ class Struct(object):
current = getattr(current, item) current = getattr(current, item)
return current return current
def get_media_from_handle(self, handle):
return self.db.get_from_name_and_handle(handle.classname, str(handle))
def handle_join(self, item): def handle_join(self, item):
""" """
If the item is a handle, look up reference object. If the item is a handle, look up reference object.
""" """
if isinstance(item, HandleClass) and self.db: if isinstance(item, HandleClass) and self.db:
obj = self.get_media_from_handle(item) obj = self.db.get_from_name_and_handle(item.classname, str(item))
if obj: if obj:
return Struct(obj.to_struct(), self.db) return Struct(obj.to_struct(), self.db)
else: else:
@ -263,7 +260,8 @@ class Struct(object):
if struct is None: # invalid part to set, skip if struct is None: # invalid part to set, skip
return return
if isinstance(struct, HandleClass): if isinstance(struct, HandleClass):
struct = self.get_media_from_handle(struct).to_struct() obj = self.db.get_from_name_and_handle(struct.classname, str(struct))
struct = obj.to_struct()
# keep track of primary object for update, below # keep track of primary object for update, below
if isinstance(struct, dict) and "_class" in struct and self.primary_object_q(struct["_class"]): if isinstance(struct, dict) and "_class" in struct and self.primary_object_q(struct["_class"]):
primary_obj = struct primary_obj = struct

View File

@ -716,7 +716,7 @@ class DbBsddbRead(DbReadBase, Callback):
>>> self.get_from_name_and_handle("Person", "a7ad62365bc652387008") >>> self.get_from_name_and_handle("Person", "a7ad62365bc652387008")
>>> self.get_from_name_and_handle("Media", "c3434653675bcd736f23") >>> self.get_from_name_and_handle("Media", "c3434653675bcd736f23")
""" """
if table_name in self.get_table_func(): if table_name in self.get_table_func() and handle:
return self.get_table_func(table_name,"handle_func")(handle) return self.get_table_func(table_name,"handle_func")(handle)
return None return None