diff --git a/gramps/gui/editors/displaytabs/eventrefmodel.py b/gramps/gui/editors/displaytabs/eventrefmodel.py index 3dde65c8e..fd425391d 100644 --- a/gramps/gui/editors/displaytabs/eventrefmodel.py +++ b/gramps/gui/editors/displaytabs/eventrefmodel.py @@ -51,6 +51,7 @@ from gramps.gen.datehandler import get_date, get_date_valid from gramps.gen.config import config from gramps.gen.utils.db import get_participant_from_event from gramps.gen.display.place import displayer as place_displayer +from gramps.gen.proxy.cache import CacheProxyDb #------------------------------------------------------------------------- # @@ -101,7 +102,7 @@ class EventRefModel(Gtk.TreeStore): self.start_date = kwargs.get("start_date", None) typeobjs = (x[1] for x in self.COLS) Gtk.TreeStore.__init__(self, *typeobjs) - self.db = db + self.db = CacheProxyDb(db) self.groups = groups for index, group in enumerate(event_list): parentiter = self.append(None, row=self.row_group(index, group)) diff --git a/gramps/plugins/gramplet/events.py b/gramps/plugins/gramplet/events.py index a83f437bb..b3bf66e41 100644 --- a/gramps/plugins/gramplet/events.py +++ b/gramps/plugins/gramplet/events.py @@ -41,6 +41,7 @@ from gramps.gen.utils.db import (get_participant_from_event, get_marriage_or_fallback) from gramps.gen.errors import WindowActiveError from gramps.gen.config import config +from gramps.gen.proxy.cache import CacheProxyDb from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext @@ -51,6 +52,7 @@ class Events(Gramplet, DbGUIElement): def __init__(self, gui, nav_group=0): Gramplet.__init__(self, gui, nav_group) DbGUIElement.__init__(self, self.dbstate.db) + self.db = None """ Displays the events for a person or family. @@ -99,14 +101,14 @@ class Events(Gramplet, DbGUIElement): Add an event to the model. """ self.callman.register_handles({'event': [event_ref.ref]}) - event = self.dbstate.db.get_event_from_handle(event_ref.ref) + event = self.db.get_event_from_handle(event_ref.ref) event_date = get_date(event) event_sort = '%012d' % event.get_date_object().get_sort_value() person_age = self.column_age(event) person_age_sort = self.column_sort_age(event) - place = place_displayer.display_event(self.dbstate.db, event) + place = place_displayer.display_event(self.db, event) - participants = get_participant_from_event(self.dbstate.db, + participants = get_participant_from_event(self.db, event_ref.ref) self.model.add((event.get_handle(), @@ -191,24 +193,26 @@ class PersonEvents(Events): def main(self): # return false finishes active_handle = self.get_active('Person') + self.db = CacheProxyDb(self.dbstate.db) self.model.clear() self.callman.unregister_all() if active_handle: self.display_person(active_handle) else: self.set_has_data(False) + self.db = None def display_person(self, active_handle): """ Display the events for the active person. """ - active_person = self.dbstate.db.get_person_from_handle(active_handle) + active_person = self.db.get_person_from_handle(active_handle) if active_person: self.cached_start_date = self.get_start_date() for event_ref in active_person.get_event_ref_list(): self.add_event_ref(event_ref) for family_handle in active_person.get_family_handle_list(): - family = self.dbstate.db.get_family_from_handle(family_handle) + family = self.db.get_family_from_handle(family_handle) self.display_family(family, active_person) else: self.cached_start_date = None @@ -220,7 +224,7 @@ class PersonEvents(Events): """ spouse_handle = find_spouse(active_person, family) if spouse_handle: - spouse = self.dbstate.db.get_person_from_handle(spouse_handle) + spouse = self.db.get_person_from_handle(spouse_handle) else: spouse = None if family: @@ -233,8 +237,8 @@ class PersonEvents(Events): something close to birth. """ active_handle = self.get_active('Person') - active = self.dbstate.db.get_person_from_handle(active_handle) - event = get_birth_or_fallback(self.dbstate.db, active) + active = self.db.get_person_from_handle(active_handle) + event = get_birth_or_fallback(self.db, active) return event.get_date_object() if event else None class FamilyEvents(Events): @@ -264,18 +268,20 @@ class FamilyEvents(Events): def main(self): # return false finishes active_handle = self.get_active('Family') + self.db = CacheProxyDb(self.dbstate.db) self.model.clear() self.callman.unregister_all() if active_handle: self.display_family(active_handle) else: self.set_has_data(False) + self.db = None def display_family(self, active_handle): """ Display the events for the active family. """ - active_family = self.dbstate.db.get_family_from_handle(active_handle) + active_family = self.db.get_family_from_handle(active_handle) self.cached_start_date = self.get_start_date() for event_ref in active_family.get_event_ref_list(): self.add_event_ref(event_ref) @@ -287,7 +293,7 @@ class FamilyEvents(Events): something close to marriage. """ active_handle = self.get_active('Family') - active = self.dbstate.db.get_family_from_handle(active_handle) - event = get_marriage_or_fallback(self.dbstate.db, active) + active = self.db.get_family_from_handle(active_handle) + event = get_marriage_or_fallback(self.db, active) return event.get_date_object() if event else None