From dc2c43823168e4bbf9ea928b4d4e037abbc8cd16 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Thu, 1 Jan 2009 00:58:18 +0000 Subject: [PATCH] Refinements to give more feedback on probably alive; use CAUSE_DEATH as additional evidence for death; date span shows (unknown) for invalid differences. svn: r11556 --- src/DataViews/RelationView.py | 18 ++++++++++++------ src/DisplayModels/_PeopleModel.py | 6 +++--- src/ReportBase/_ReportUtils.py | 6 ++++-- src/gen/lib/date.py | 5 ++++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/DataViews/RelationView.py b/src/DataViews/RelationView.py index 13b203570..affb8fbc9 100644 --- a/src/DataViews/RelationView.py +++ b/src/DataViews/RelationView.py @@ -46,7 +46,7 @@ import gtk import gen.lib import PageView from BasicUtils import name_displayer -from Utils import media_path_full +from Utils import media_path_full, probably_alive import DateHandler import ThumbNails import Config @@ -577,17 +577,23 @@ class RelationshipView(PageView.PersonNavView): age = death_date - birth_date subtbl.attach(widgets.BasicLabel("%s:" % death_title), 1, 2, 2, 3, xoptions=gtk.FILL, yoptions=0) - subtbl.attach(widgets.BasicLabel("%s (%s)" % + subtbl.attach(widgets.BasicLabel("%s (%s)" % (self.format_event(death), age)), 2, 3, 2, 3, yoptions=0) showed_death = True if not showed_death: age = gen.lib.date.Today() - birth_date - subtbl.attach(widgets.BasicLabel("%s:" % death_title), - 1, 2, 2, 3, xoptions=gtk.FILL, yoptions=0) - subtbl.attach(widgets.BasicLabel("(%s)" % age), - 2, 3, 2, 3, yoptions=0) + if probably_alive(person, self.dbstate.db): + subtbl.attach(widgets.BasicLabel("%s:" % _("Alive")), + 1, 2, 2, 3, xoptions=gtk.FILL, yoptions=0) + subtbl.attach(widgets.BasicLabel("(%s)" % age), + 2, 3, 2, 3, yoptions=0) + else: + subtbl.attach(widgets.BasicLabel("%s:" % _("Death")), + 1, 2, 2, 3, xoptions=gtk.FILL, yoptions=0) + subtbl.attach(widgets.BasicLabel("%s (%s)" % (_("unknown"), age)), + 2, 3, 2, 3, yoptions=0) showed_death = True if not showed_death: diff --git a/src/DisplayModels/_PeopleModel.py b/src/DisplayModels/_PeopleModel.py index 4429678e8..f7d4ecc39 100644 --- a/src/DisplayModels/_PeopleModel.py +++ b/src/DisplayModels/_PeopleModel.py @@ -600,7 +600,7 @@ class PeopleModel(gtk.GenericTreeModel): event = self.db.get_event_from_handle(er.ref) etype = event.get_type() date_str = DateHandler.get_date(event) - if (etype in [EventType.BURIAL, EventType.CREMATION] + if (etype in [EventType.BURIAL, EventType.CREMATION, EventType.CAUSE_DEATH] and er.get_role() == EventRoleType.PRIMARY and date_str): retval = "%s" % cgi.escape(date_str) @@ -667,8 +667,8 @@ class PeopleModel(gtk.GenericTreeModel): er.unserialize(event_ref) event = self.db.get_event_from_handle(er.ref) etype = event.get_type() - if etype in [EventType.BURIAL, EventType.CREMATION]\ - and er.get_role() == EventRoleType.PRIMARY: + if (etype in [EventType.BURIAL, EventType.CREMATION, EventType.CAUSE_DEATH] + 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 0b1c69e42..b7675a075 100644 --- a/src/ReportBase/_ReportUtils.py +++ b/src/ReportBase/_ReportUtils.py @@ -2785,8 +2785,10 @@ def get_death_or_fallback(database, person): # 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.type.value in [EventType.BURIAL, EventType.CREMATION] \ - and event_ref.role.value == EventRoleType.PRIMARY: + if (event.type.value in [EventType.BURIAL, + EventType.CREMATION, + EventType.CAUSE_DEATH] + and event_ref.role.value == EventRoleType.PRIMARY): return event return None diff --git a/src/gen/lib/date.py b/src/gen/lib/date.py index 036aaf65a..cc9e1597a 100644 --- a/src/gen/lib/date.py +++ b/src/gen/lib/date.py @@ -72,7 +72,7 @@ class DateError(Exception): class Span: """ Class used in date differences """ def __init__(self, *diff_tuple): - self.diff_tuple = diff_tuple + self.diff_tuple = tuple(diff_tuple) def __getitem__(self, pos): return self.diff_tuple[pos] @@ -81,6 +81,7 @@ class Span: return True def __repr__(self): + if self.diff_tuple == (-1, -1, -1): return _("unknown") retval = "" if self.diff_tuple[0] != 0: retval += (_("%d years") % self.diff_tuple[0]) @@ -358,6 +359,8 @@ class Date: date1 = date1.to_calendar("gregorian") if date2.calendar != Date.CAL_GREGORIAN: date2 = date2.to_calendar("gregorian") + if date1.sortval == 0 or date2.sortval == 0: + return Span(-1, -1, -1) d1 = [i or 1 for i in date1.get_ymd()] d2 = [i or 1 for i in date2.get_ymd()] if d1 < d2: