Added db.get_transaction_class to connect db and txn; refactored _tables metadata
This commit is contained in:
parent
94dbcc5ac7
commit
b0517d0ee4
@ -61,6 +61,18 @@ class DbReadBase(object):
|
||||
"""
|
||||
self.basedb = self
|
||||
self.__feature = {} # {"feature": VALUE, ...}
|
||||
self._tables = {
|
||||
"Citation": {},
|
||||
"Event": {},
|
||||
"Family": {},
|
||||
"Media": {},
|
||||
"Note": {},
|
||||
"Person": {},
|
||||
"Place": {},
|
||||
"Repository": {},
|
||||
"Source": {},
|
||||
"Tag": {},
|
||||
}
|
||||
|
||||
def get_feature(self, feature):
|
||||
"""
|
||||
|
@ -107,92 +107,109 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"""
|
||||
A Gramps Database Backend. This replicates the grampsdb functions.
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
DbReadBase.__init__(self)
|
||||
DbWriteBase.__init__(self)
|
||||
self._tables = {
|
||||
'Person':
|
||||
{
|
||||
self._tables['Person'].update(
|
||||
{
|
||||
"handle_func": self.get_person_from_handle,
|
||||
"gramps_id_func": self.get_person_from_gramps_id,
|
||||
"class_func": Person,
|
||||
"cursor_func": self.get_person_cursor,
|
||||
"handles_func": self.get_person_handles,
|
||||
},
|
||||
'Family':
|
||||
{
|
||||
"add_func": self.add_person,
|
||||
"commit_func": self.commit_person,
|
||||
})
|
||||
self._tables['Family'].update(
|
||||
{
|
||||
"handle_func": self.get_family_from_handle,
|
||||
"gramps_id_func": self.get_family_from_gramps_id,
|
||||
"class_func": Family,
|
||||
"cursor_func": self.get_family_cursor,
|
||||
"handles_func": self.get_family_handles,
|
||||
},
|
||||
'Source':
|
||||
{
|
||||
"add_func": self.add_family,
|
||||
"commit_func": self.commit_family,
|
||||
})
|
||||
self._tables['Source'].update(
|
||||
{
|
||||
"handle_func": self.get_source_from_handle,
|
||||
"gramps_id_func": self.get_source_from_gramps_id,
|
||||
"class_func": Source,
|
||||
"cursor_func": self.get_source_cursor,
|
||||
"handles_func": self.get_source_handles,
|
||||
},
|
||||
'Citation':
|
||||
{
|
||||
"add_func": self.add_source,
|
||||
"commit_func": self.commit_source,
|
||||
})
|
||||
self._tables['Citation'].update(
|
||||
{
|
||||
"handle_func": self.get_citation_from_handle,
|
||||
"gramps_id_func": self.get_citation_from_gramps_id,
|
||||
"class_func": Citation,
|
||||
"cursor_func": self.get_citation_cursor,
|
||||
"handles_func": self.get_citation_handles,
|
||||
},
|
||||
'Event':
|
||||
{
|
||||
"add_func": self.add_citation,
|
||||
"commit_func": self.commit_citation,
|
||||
})
|
||||
self._tables['Event'].update(
|
||||
{
|
||||
"handle_func": self.get_event_from_handle,
|
||||
"gramps_id_func": self.get_event_from_gramps_id,
|
||||
"class_func": Event,
|
||||
"cursor_func": self.get_event_cursor,
|
||||
"handles_func": self.get_event_handles,
|
||||
},
|
||||
'Media':
|
||||
{
|
||||
"add_func": self.add_event,
|
||||
"commit_func": self.commit_event,
|
||||
})
|
||||
self._tables['Media'].update(
|
||||
{
|
||||
"handle_func": self.get_object_from_handle,
|
||||
"gramps_id_func": self.get_object_from_gramps_id,
|
||||
"class_func": MediaObject,
|
||||
"cursor_func": self.get_media_cursor,
|
||||
"handles_func": self.get_media_object_handles,
|
||||
},
|
||||
'Place':
|
||||
{
|
||||
"add_func": self.add_object,
|
||||
"commit_func": self.commit_media_object,
|
||||
})
|
||||
self._tables['Place'].update(
|
||||
{
|
||||
"handle_func": self.get_place_from_handle,
|
||||
"gramps_id_func": self.get_place_from_gramps_id,
|
||||
"class_func": Place,
|
||||
"cursor_func": self.get_place_cursor,
|
||||
"handles_func": self.get_place_handles,
|
||||
},
|
||||
'Repository':
|
||||
{
|
||||
"add_func": self.add_place,
|
||||
"commit_func": self.commit_place,
|
||||
})
|
||||
self._tables['Repository'].update(
|
||||
{
|
||||
"handle_func": self.get_repository_from_handle,
|
||||
"gramps_id_func": self.get_repository_from_gramps_id,
|
||||
"class_func": Repository,
|
||||
"cursor_func": self.get_repository_cursor,
|
||||
"handles_func": self.get_repository_handles,
|
||||
},
|
||||
'Note':
|
||||
{
|
||||
"add_func": self.add_repository,
|
||||
"commit_func": self.commit_repository,
|
||||
})
|
||||
self._tables['Note'].update(
|
||||
{
|
||||
"handle_func": self.get_note_from_handle,
|
||||
"gramps_id_func": self.get_note_from_gramps_id,
|
||||
"class_func": Note,
|
||||
"cursor_func": self.get_note_cursor,
|
||||
"handles_func": self.get_note_handles,
|
||||
},
|
||||
'Tag':
|
||||
{
|
||||
"add_func": self.add_note,
|
||||
"commit_func": self.commit_note,
|
||||
})
|
||||
self._tables['Tag'].update(
|
||||
{
|
||||
"handle_func": self.get_tag_from_handle,
|
||||
"gramps_id_func": None,
|
||||
"class_func": Tag,
|
||||
"cursor_func": self.get_tag_cursor,
|
||||
"handles_func": self.get_tag_handles,
|
||||
},
|
||||
}
|
||||
"add_func": self.add_tag,
|
||||
"commit_func": self.commit_tag,
|
||||
})
|
||||
# skip GEDCOM cross-ref check for now:
|
||||
self.set_feature("skip-check-xref", True)
|
||||
self.set_feature("skip-import-additions", True)
|
||||
@ -968,3 +985,9 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
for (handle, data) in cursor():
|
||||
map = getattr(self, "%s_map" % key.lower())
|
||||
map[handle] = class_.create(data)
|
||||
|
||||
def get_transaction_class(self):
|
||||
"""
|
||||
Get the transaction class associated with this database backend.
|
||||
"""
|
||||
return DictionaryTxn
|
||||
|
@ -293,88 +293,86 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
"""
|
||||
DbReadBase.__init__(self)
|
||||
Callback.__init__(self)
|
||||
self._tables = {
|
||||
'Person':
|
||||
{
|
||||
self._tables['Person'].update(
|
||||
{
|
||||
"handle_func": self.get_person_from_handle,
|
||||
"gramps_id_func": self.get_person_from_gramps_id,
|
||||
"class_func": Person,
|
||||
"cursor_func": self.get_person_cursor,
|
||||
"handles_func": self.get_person_handles,
|
||||
},
|
||||
'Family':
|
||||
{
|
||||
})
|
||||
self._tables['Family'].update(
|
||||
{
|
||||
"handle_func": self.get_family_from_handle,
|
||||
"gramps_id_func": self.get_family_from_gramps_id,
|
||||
"class_func": Family,
|
||||
"cursor_func": self.get_family_cursor,
|
||||
"handles_func": self.get_family_handles,
|
||||
},
|
||||
'Source':
|
||||
{
|
||||
})
|
||||
self._tables['Source'].update(
|
||||
{
|
||||
"handle_func": self.get_source_from_handle,
|
||||
"gramps_id_func": self.get_source_from_gramps_id,
|
||||
"class_func": Source,
|
||||
"cursor_func": self.get_source_cursor,
|
||||
"handles_func": self.get_source_handles,
|
||||
},
|
||||
'Citation':
|
||||
{
|
||||
})
|
||||
self._tables['Citation'].update(
|
||||
{
|
||||
"handle_func": self.get_citation_from_handle,
|
||||
"gramps_id_func": self.get_citation_from_gramps_id,
|
||||
"class_func": Citation,
|
||||
"cursor_func": self.get_citation_cursor,
|
||||
"handles_func": self.get_citation_handles,
|
||||
},
|
||||
'Event':
|
||||
{
|
||||
})
|
||||
self._tables['Event'].update(
|
||||
{
|
||||
"handle_func": self.get_event_from_handle,
|
||||
"gramps_id_func": self.get_event_from_gramps_id,
|
||||
"class_func": Event,
|
||||
"cursor_func": self.get_event_cursor,
|
||||
"handles_func": self.get_event_handles,
|
||||
},
|
||||
'Media':
|
||||
{
|
||||
})
|
||||
self._tables['Media'].update(
|
||||
{
|
||||
"handle_func": self.get_object_from_handle,
|
||||
"gramps_id_func": self.get_object_from_gramps_id,
|
||||
"class_func": MediaObject,
|
||||
"cursor_func": self.get_media_cursor,
|
||||
"handles_func": self.get_media_object_handles,
|
||||
},
|
||||
'Place':
|
||||
{
|
||||
})
|
||||
self._tables['Place'].update(
|
||||
{
|
||||
"handle_func": self.get_place_from_handle,
|
||||
"gramps_id_func": self.get_place_from_gramps_id,
|
||||
"class_func": Place,
|
||||
"cursor_func": self.get_place_cursor,
|
||||
"handles_func": self.get_place_handles,
|
||||
},
|
||||
'Repository':
|
||||
{
|
||||
})
|
||||
self._tables['Repository'].update(
|
||||
{
|
||||
"handle_func": self.get_repository_from_handle,
|
||||
"gramps_id_func": self.get_repository_from_gramps_id,
|
||||
"class_func": Repository,
|
||||
"cursor_func": self.get_repository_cursor,
|
||||
"handles_func": self.get_repository_handles,
|
||||
},
|
||||
'Note':
|
||||
{
|
||||
})
|
||||
self._tables['Note'].update(
|
||||
{
|
||||
"handle_func": self.get_note_from_handle,
|
||||
"gramps_id_func": self.get_note_from_gramps_id,
|
||||
"class_func": Note,
|
||||
"cursor_func": self.get_note_cursor,
|
||||
"handles_func": self.get_note_handles,
|
||||
},
|
||||
'Tag':
|
||||
{
|
||||
})
|
||||
self._tables['Tag'].update(
|
||||
{
|
||||
"handle_func": self.get_tag_from_handle,
|
||||
"gramps_id_func": None,
|
||||
"class_func": Tag,
|
||||
"cursor_func": self.get_tag_cursor,
|
||||
"handles_func": self.get_tag_handles,
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
self.set_person_id_prefix('I%04d')
|
||||
self.set_object_id_prefix('O%04d')
|
||||
|
@ -285,6 +285,107 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
DbBsddbRead.__init__(self)
|
||||
DbWriteBase.__init__(self)
|
||||
#UpdateCallback.__init__(self)
|
||||
self._tables['Person'].update(
|
||||
{
|
||||
"handle_func": self.get_person_from_handle,
|
||||
"gramps_id_func": self.get_person_from_gramps_id,
|
||||
"class_func": Person,
|
||||
"cursor_func": self.get_person_cursor,
|
||||
"handles_func": self.get_person_handles,
|
||||
"add_func": self.add_person,
|
||||
"commit_func": self.commit_person,
|
||||
})
|
||||
self._tables['Family'].update(
|
||||
{
|
||||
"handle_func": self.get_family_from_handle,
|
||||
"gramps_id_func": self.get_family_from_gramps_id,
|
||||
"class_func": Family,
|
||||
"cursor_func": self.get_family_cursor,
|
||||
"handles_func": self.get_family_handles,
|
||||
"add_func": self.add_family,
|
||||
"commit_func": self.commit_family,
|
||||
})
|
||||
self._tables['Source'].update(
|
||||
{
|
||||
"handle_func": self.get_source_from_handle,
|
||||
"gramps_id_func": self.get_source_from_gramps_id,
|
||||
"class_func": Source,
|
||||
"cursor_func": self.get_source_cursor,
|
||||
"handles_func": self.get_source_handles,
|
||||
"add_func": self.add_source,
|
||||
"commit_func": self.commit_source,
|
||||
})
|
||||
self._tables['Citation'].update(
|
||||
{
|
||||
"handle_func": self.get_citation_from_handle,
|
||||
"gramps_id_func": self.get_citation_from_gramps_id,
|
||||
"class_func": Citation,
|
||||
"cursor_func": self.get_citation_cursor,
|
||||
"handles_func": self.get_citation_handles,
|
||||
"add_func": self.add_citation,
|
||||
"commit_func": self.commit_citation,
|
||||
})
|
||||
self._tables['Event'].update(
|
||||
{
|
||||
"handle_func": self.get_event_from_handle,
|
||||
"gramps_id_func": self.get_event_from_gramps_id,
|
||||
"class_func": Event,
|
||||
"cursor_func": self.get_event_cursor,
|
||||
"handles_func": self.get_event_handles,
|
||||
"add_func": self.add_event,
|
||||
"commit_func": self.commit_event,
|
||||
})
|
||||
self._tables['Media'].update(
|
||||
{
|
||||
"handle_func": self.get_object_from_handle,
|
||||
"gramps_id_func": self.get_object_from_gramps_id,
|
||||
"class_func": MediaObject,
|
||||
"cursor_func": self.get_media_cursor,
|
||||
"handles_func": self.get_media_object_handles,
|
||||
"add_func": self.add_object,
|
||||
"commit_func": self.commit_media_object,
|
||||
})
|
||||
self._tables['Place'].update(
|
||||
{
|
||||
"handle_func": self.get_place_from_handle,
|
||||
"gramps_id_func": self.get_place_from_gramps_id,
|
||||
"class_func": Place,
|
||||
"cursor_func": self.get_place_cursor,
|
||||
"handles_func": self.get_place_handles,
|
||||
"add_func": self.add_place,
|
||||
"commit_func": self.commit_place,
|
||||
})
|
||||
self._tables['Repository'].update(
|
||||
{
|
||||
"handle_func": self.get_repository_from_handle,
|
||||
"gramps_id_func": self.get_repository_from_gramps_id,
|
||||
"class_func": Repository,
|
||||
"cursor_func": self.get_repository_cursor,
|
||||
"handles_func": self.get_repository_handles,
|
||||
"add_func": self.add_repository,
|
||||
"commit_func": self.commit_repository,
|
||||
})
|
||||
self._tables['Note'].update(
|
||||
{
|
||||
"handle_func": self.get_note_from_handle,
|
||||
"gramps_id_func": self.get_note_from_gramps_id,
|
||||
"class_func": Note,
|
||||
"cursor_func": self.get_note_cursor,
|
||||
"handles_func": self.get_note_handles,
|
||||
"add_func": self.add_note,
|
||||
"commit_func": self.commit_note,
|
||||
})
|
||||
self._tables['Tag'].update(
|
||||
{
|
||||
"handle_func": self.get_tag_from_handle,
|
||||
"gramps_id_func": None,
|
||||
"class_func": Tag,
|
||||
"cursor_func": self.get_tag_cursor,
|
||||
"handles_func": self.get_tag_handles,
|
||||
"add_func": self.add_tag,
|
||||
"commit_func": self.commit_tag,
|
||||
})
|
||||
|
||||
self.secondary_connected = False
|
||||
self.has_changed = False
|
||||
self.brief_name = None
|
||||
@ -2312,6 +2413,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"""
|
||||
return self.brief_name
|
||||
|
||||
def get_transaction_class(self):
|
||||
"""
|
||||
Get the transaction class associated with this database backend.
|
||||
"""
|
||||
return DbTxn
|
||||
|
||||
def _mkname(path, name):
|
||||
return os.path.join(path, name + DBEXT)
|
||||
|
Loading…
x
Reference in New Issue
Block a user