From 6462f4b33992ceae9cb1a7d3dc894bfcd9f26dc8 Mon Sep 17 00:00:00 2001 From: Benny Malengier Date: Sun, 21 Oct 2007 08:04:01 +0000 Subject: [PATCH] 2007-10-21 Benny Malengier * src/Editors/_EditPerson.py: If a family changes, rebuild family backref of all open editors. issue #1309, causing corrupt database. Also remove unneeded associations rebuild when family changes svn: r9226 --- ChangeLog | 5 +++++ src/Editors/_EditPerson.py | 23 +++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index cbdc5bf3b..19cfda78a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-21 Benny Malengier + * src/Editors/_EditPerson.py: If a family changes, rebuild family backref of all + open editors. issue #1309, causing corrupt database. + Also remove unneeded associations rebuild when family changes + 2007-10-20 Brian Matherly * src/ReportBase/_BareReportDialog.py: * src/plugins/WebCal.py: diff --git a/src/Editors/_EditPerson.py b/src/Editors/_EditPerson.py index c66126c11..06f9be0d1 100644 --- a/src/Editors/_EditPerson.py +++ b/src/Editors/_EditPerson.py @@ -172,19 +172,26 @@ class EditPerson(EditPrimary): self._add_db_signal('family-add', self.family_change) def family_change(self, handle_list): - flist = self.obj.get_family_handle_list() + self.obj.get_parent_family_handle_list() - for handle in handle_list: - if handle in flist: - self._update_families() - return + """Callback for family change signals. This should rebuild the + backreferences to family in person when: + 1)a family the person is parent of changes. Person could have + been removed + 2)a family the person is child in changes. Child could have been + removed + 3)a family is changed. The person could be added as child or + parent + """ + #As this would be an extensive check, we choose the easy path and + # rebuild family backreferences on all family changes + + self._update_families() def _update_families(self): phandle = self.obj.get_handle() person = self.dbstate.db.get_person_from_handle(phandle) self.obj.set_family_handle_list(person.get_family_handle_list()) - self.obj.set_parent_family_handle_list(person.get_parent_family_handle_list()) - self.person_ref_list.data = self.obj.get_person_ref_list() - self.person_ref_list.rebuild() + self.obj.set_parent_family_handle_list( + person.get_parent_family_handle_list()) def _setup_fields(self): """