Cleaned up code; added cause of death, cremation, and burial events to be evidence of death

svn: r11550
This commit is contained in:
Doug Blank 2008-12-31 15:38:49 +00:00
parent 6d2cc418e4
commit 5aa95a60ee

View File

@ -42,6 +42,7 @@ from gen.plug.menu import (BooleanOption, EnumeratedListOption,
from ReportBase import Report, ReportUtils, MenuReportOptions, \ from ReportBase import Report, ReportUtils, MenuReportOptions, \
CATEGORY_TEXT CATEGORY_TEXT
from gen.plug import PluginManager from gen.plug import PluginManager
from gen.lib import EventType
MODE_GUI = PluginManager.REPORT_MODE_GUI MODE_GUI = PluginManager.REPORT_MODE_GUI
MODE_BKI = PluginManager.REPORT_MODE_BKI MODE_BKI = PluginManager.REPORT_MODE_BKI
@ -56,12 +57,28 @@ MODE_CLI = PluginManager.REPORT_MODE_CLI
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def good_date(date): def _good_date(date):
if RecordsReportOptions.REGULAR_DATES_ONLY: if RecordsReportOptions.REGULAR_DATES_ONLY:
return date.is_regular() return date.is_regular()
else: else:
return date.is_valid() return date.is_valid()
def _find_death_date(db, person):
death_ref = person.get_death_ref()
if death_ref:
death = db.get_event_from_handle(death_ref.ref)
return death.get_date_object()
else:
event_list = person.get_primary_event_ref_list()
for event_ref in event_list:
event = db.get_event_from_handle(event_ref.ref)
if (event.get_type() == EventType.BURIAL or
event.get_type() == EventType.CAUSE_DEATH or
event.get_type() == EventType.CREMATION):
return event.get_date_object()
return None
def _find_records(db, filter, callname): def _find_records(db, filter, callname):
today = datetime.date.today() today = datetime.date.today()
@ -98,24 +115,19 @@ def _find_records(db, filter, callname):
birth = db.get_event_from_handle(birth_ref.ref) birth = db.get_event_from_handle(birth_ref.ref)
birth_date = birth.get_date_object() birth_date = birth.get_date_object()
death_ref = person.get_death_ref() death_date = _find_death_date(db, person)
if death_ref:
death = db.get_event_from_handle(death_ref.ref)
death_date = death.get_date_object()
else:
death_date = None
if not good_date(birth_date): if not _good_date(birth_date):
# Birth date unknown or incomplete, so we can't calculate any age. # Birth date unknown or incomplete, so we can't calculate any age.
continue continue
name = _person_get_display_name(person, callname) name = _person_get_display_name(person, callname)
if death_ref is None: if death_date is None:
# Still living, look for age records # Still living, look for age records
_record(person_youngestliving, person_oldestliving, _record(person_youngestliving, person_oldestliving,
today_date - birth_date, name, 'Person', person_handle) today_date - birth_date, name, 'Person', person_handle)
elif good_date(death_date): elif _good_date(death_date):
# Already died, look for age records # Already died, look for age records
_record(person_youngestdied, person_oldestdied, _record(person_youngestdied, person_oldestdied,
death_date - birth_date, name, 'Person', person_handle) death_date - birth_date, name, 'Person', person_handle)
@ -132,12 +144,12 @@ def _find_records(db, filter, callname):
elif event.get_type() == EventType.DIVORCE: elif event.get_type() == EventType.DIVORCE:
divorce_date = event.get_date_object() divorce_date = event.get_date_object()
if marriage_date is not None and good_date(marriage_date): if marriage_date is not None and _good_date(marriage_date):
_record(person_youngestmarried, person_oldestmarried, _record(person_youngestmarried, person_oldestmarried,
marriage_date - birth_date, marriage_date - birth_date,
name, 'Person', person_handle) name, 'Person', person_handle)
if divorce_date is not None and good_date(divorce_date): if divorce_date is not None and _good_date(divorce_date):
_record(person_youngestdivorced, person_oldestdivorced, _record(person_youngestdivorced, person_oldestdivorced,
divorce_date - birth_date, divorce_date - birth_date,
name, 'Person', person_handle) name, 'Person', person_handle)
@ -161,7 +173,7 @@ def _find_records(db, filter, callname):
child_birth = db.get_event_from_handle(child_birth_ref.ref) child_birth = db.get_event_from_handle(child_birth_ref.ref)
child_birth_date = child_birth.get_date_object() child_birth_date = child_birth.get_date_object()
if not good_date(child_birth_date): if not _good_date(child_birth_date):
continue continue
if person.get_gender() == person.MALE: if person.get_gender() == person.MALE:
@ -220,48 +232,37 @@ def _find_records(db, filter, callname):
divorce = event divorce = event
divorce_date = event.get_date_object() divorce_date = event.get_date_object()
father_death = None father_death_date = _find_death_date(db, father)
father_death_date = None mather_death_date = _find_death_date(db, mother)
father_death_ref = father.get_death_ref()
if father_death_ref:
father_death = db.get_event_from_handle(father_death_ref.ref)
father_death_date = father_death.get_date_object()
mother_death = None if not marriage or not _good_date(marriage_date):
mother_death_date = None
mother_death_ref = mother.get_death_ref()
if mother_death_ref:
mother_death = db.get_event_from_handle(mother_death_ref.ref)
mother_death_date = mother_death.get_date_object()
if not marriage or not good_date(marriage_date):
# Not married or marriage date unknown # Not married or marriage date unknown
continue continue
if divorce and not good_date(divorce_date): if divorce and not _good_date(divorce_date):
# Divorced, but divorce date unknown # Divorced, but divorce date unknown
continue continue
if father_death and (not father_death_date or not good_date(father_death_date)): if (not father_death_date or not _good_date(father_death_date)):
# Father dead, but death date unknown # Father dead, but death date unknown
continue continue
if mother_death and (not mother_death_date or not good_date(mother_death_date)): if (not mother_death_date or not _good_date(mother_death_date)):
# Mother dead, but death date unknown # Mother dead, but death date unknown
continue continue
if not divorce and not father_death and not mother_death: if not divorce and not father_death_date and not mother_death_date:
# Still married and alive # Still married and alive
_record(family_youngestmarried, family_oldestmarried, _record(family_youngestmarried, family_oldestmarried,
today_date - marriage_date, today_date - marriage_date,
name, 'Family', family_handle) name, 'Family', family_handle)
else: else:
end = None end = None
if father_death and mother_death: if father_death_date and mother_death_date:
end = min(father_death_date, mother_death_date) end = min(father_death_date, mother_death_date)
elif father_death: elif father_death_date:
end = father_death_date end = father_death_date
elif mother_death: elif mother_death_date:
end = mother_death_date end = mother_death_date
if divorce: if divorce:
if end: if end: