diff --git a/ChangeLog b/ChangeLog index 7e2e1255b..80225ed83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,12 @@ * src/RelLib/_Person.py (set_birth_ref,set_death_ref): Dont fail if setting to None (which is what Check.py does). * src/plugins/TestcaseGenerator.py: Make it work again + some enhancements + * src/ReportBase/_ReportUtils: Factor out common code into + get_birth_or_fallback() and get_death_or_fallback() + * src/DataViews/_PedigreeView.py: Use get_birth/death_or_fallback() + * src/DataViews/_RelationView.py: Use get_birth/death_or_fallback() + * src/DisplayModels/_PeopleModel.py: Fix EventRoleType call + 2006-11-21 Brian Matherly * src/plugins/DetDescendantReport.py: 0000558: Print only primary events diff --git a/src/DataViews/_PedigreeView.py b/src/DataViews/_PedigreeView.py index a60031dbb..3a6ad9db2 100644 --- a/src/DataViews/_PedigreeView.py +++ b/src/DataViews/_PedigreeView.py @@ -391,35 +391,8 @@ class FormattingHelper: if line_count < 3: return name - birth_ref = person.get_birth_ref() - birth = None - birth_fallback = False - if birth_ref: - birth = self.dbstate.db.get_event_from_handle(birth_ref.ref) - else: - for event_ref in person.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() in [RelLib.EventType.CHRISTEN, RelLib.EventType.BAPTISM] and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - birth = event - birth_fallback = True - break - - death_ref = person.get_death_ref() - death = None - death_fallback = False - if death_ref: - death = self.dbstate.db.get_event_from_handle(death_ref.ref) - else: - for event_ref in person.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() in [RelLib.EventType.BURIAL, RelLib.EventType.CREMATION] and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - death = event - death_fallback = True - break - - if birth and birth_fallback and use_markup: + birth = ReportUtils.get_birth_or_fallback(self.dbstate.db, person) + if birth and use_markup and birth.get_type() != RelLib.EventType.BIRTH: bdate = "%s" % DateHandler.get_date(birth) bplace = "%s" % self.get_place_name(birth.get_place_handle()) elif birth: @@ -428,7 +401,8 @@ class FormattingHelper: else: bdate = "" bplace = "" - if death and death_fallback and use_markup: + death = ReportUtils.get_death_or_fallback(self.dbstate.db, person) + if death and use_markup and death.get_type() != RelLib.EventType.DEATH: ddate = "%s" % DateHandler.get_date(death) dplace = "%s" % self.get_place_name(death.get_place_handle()) elif death: diff --git a/src/DataViews/_RelationView.py b/src/DataViews/_RelationView.py index ce7b5b4a1..5f73e435f 100644 --- a/src/DataViews/_RelationView.py +++ b/src/DataViews/_RelationView.py @@ -487,48 +487,22 @@ class RelationshipView(PageView.PersonNavView): 2, 3, 0, 1, yoptions=0) # Birth event. - birth_ref = person.get_birth_ref() - birth_title = _('Birth') - birth = None - if birth_ref: - birth = self.dbstate.db.get_event_from_handle(birth_ref.ref) + birth = ReportUtils.get_birth_or_fallback(self.dbstate.db,person) + if birth: + birth_title = birth.get_type() else: - for event_ref in person.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() == RelLib.EventType.CHRISTEN and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - birth_title = _('Christening') - birth = event - break - if event.get_type() == RelLib.EventType.BAPTISM and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - birth_title = _('Baptism') - birth = event - break + birth_title = None subtbl.attach(GrampsWidgets.BasicLabel("%s:" % birth_title), 1, 2, 1, 2, xoptions=gtk.FILL, yoptions=0) subtbl.attach(GrampsWidgets.BasicLabel(self.format_event(birth)), 2, 3, 1, 2, yoptions=0) - death_ref = person.get_death_ref() - death_title = _('Death') - death = None - if death_ref: - death = self.dbstate.db.get_event_from_handle(death_ref.ref) + death = ReportUtils.get_death_or_fallback(self.dbstate.db,person) + if death: + death_title = death.get_type() else: - for event_ref in person.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() == RelLib.EventType.BURIAL and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - death_title = _('Burial') - death = event - break - if event.get_type() == RelLib.EventType.CREMATION and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - death_title = _('Cremation') - death = event - break + death_title = None subtbl.attach(GrampsWidgets.BasicLabel("%s:" % death_title), 1, 2, 2, 3, xoptions=gtk.FILL, yoptions=0) @@ -790,41 +764,16 @@ class RelationshipView(PageView.PersonNavView): if not child: return None - birth_ref = child.get_birth_ref() - birth = None - birth_fallback = False - if birth_ref: - birth = self.dbstate.db.get_event_from_handle(birth_ref.ref) - else: - for event_ref in child.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() in [RelLib.EventType.CHRISTEN, RelLib.EventType.BAPTISM] and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - birth = event - birth_fallback = True - break - - death_ref = child.get_death_ref() - death = None - death_fallback = False - if death_ref: - death = self.dbstate.db.get_event_from_handle(death_ref.ref) - else: - for event_ref in child.get_event_ref_list(): - event = self.dbstate.db.get_event_from_handle(event_ref.ref) - if event.get_type() in [RelLib.EventType.BURIAL, RelLib.EventType.CREMATION] and\ - event_ref.get_role() == RelLib.EventRoleType.PRIMARY: - death = event - death_fallback = True - break - - if birth and birth_fallback: + birth = ReportUtils.get_birth_or_fallback(self.dbstate.db, child) + if birth and birth.get_type != RelLib.EventType.BIRTH: bdate = "%s" % DateHandler.get_date(birth) elif birth: bdate = DateHandler.get_date(birth) else: bdate = "" - if death and death_fallback: + + death = ReportUtils.get_death_or_fallback(self.dbstate.db, child) + if death and death.get_type != RelLib.EventType.DEATH: ddate = "%s" % DateHandler.get_date(death) elif death: ddate = DateHandler.get_date(death) diff --git a/src/DisplayModels/_PeopleModel.py b/src/DisplayModels/_PeopleModel.py index 061034d86..10dc607f9 100644 --- a/src/DisplayModels/_PeopleModel.py +++ b/src/DisplayModels/_PeopleModel.py @@ -455,7 +455,7 @@ class PeopleModel(gtk.GenericTreeModel): etype = event.get_type() date_str = DateHandler.get_date(event) if (etype in [EventType.BAPTISM, EventType.CHRISTEN] - and er.get_role() == RelLib.EventRoleType.PRIMARY + and er.get_role() == EventRoleType.PRIMARY and date_str != ""): return "" + cgi.escape(date_str) + "" @@ -482,7 +482,7 @@ class PeopleModel(gtk.GenericTreeModel): etype = event.get_type() date_str = DateHandler.get_date(event) if (etype in [EventType.BURIAL, EventType.CREMATION] - and er.get_role() == RelLib.EventRoleType.PRIMARY + and er.get_role() == EventRoleType.PRIMARY and date_str != ""): return "" + cgi.escape(date_str) + "" @@ -512,7 +512,7 @@ class PeopleModel(gtk.GenericTreeModel): event = self.db.get_event_from_handle(er.ref) etype = event.get_type() if etype in [EventType.BAPTISM, EventType.CHRISTEN]\ - and er.get_role() == RelLib.EventRoleType.PRIMARY: + and er.get_role() == EventRoleType.PRIMARY: place_handle = event.get_place_handle() if place_handle: place = self.db.get_place_from_handle(place_handle) @@ -546,7 +546,7 @@ class PeopleModel(gtk.GenericTreeModel): event = self.db.get_event_from_handle(er.ref) etype = event.get_type() if etype in [EventType.BURIAL, EventType.CREMATION]\ - and er.get_role() == RelLib.EventRoleType.PRIMARY: + and er.get_role() == EventRoleType.PRIMARY: place_handle = event.get_place_handle() if place_handle: place = self.db.get_place_from_handle(place_handle) diff --git a/src/ReportBase/_ReportUtils.py b/src/ReportBase/_ReportUtils.py index cd6fd33fa..c5a52006a 100644 --- a/src/ReportBase/_ReportUtils.py +++ b/src/ReportBase/_ReportUtils.py @@ -2141,7 +2141,28 @@ def list_person_str(database,person,empty_date="",empty_place=""): text = "" return text - +def get_birth_or_fallback(database,person): + birth_ref = person.get_birth_ref() + if birth_ref: # regular birth found + return database.get_event_from_handle(birth_ref.ref) + # now search the event list for fallbacks + for event_ref in person.get_primary_event_ref_list(): + event = database.get_event_from_handle(event_ref.ref) + if event.get_type() in [RelLib.EventType.CHRISTEN, RelLib.EventType.BAPTISM]: + return event + return None + +def get_death_or_fallback(database,person): + birth_ref = person.get_death_ref() + if birth_ref: # regular death found + return database.get_event_from_handle(birth_ref.ref) + # now search the event list for fallbacks + for event_ref in person.get_primary_event_ref_list(): + event = database.get_event_from_handle(event_ref.ref) + if event.get_type() in [RelLib.EventType.BURIAL, RelLib.EventType.CREMATION]: + return event + return None + def old_calc_age(database,person): """ Calulate age.