3719: Pedigree View: should display engagement date if no marriage known; added markup dates to family view to show fallback dates, and invalid dates; pedigreeview shows abbrev. date with markup, and tooltip details

svn: r16250
This commit is contained in:
Doug Blank
2010-12-05 17:58:56 +00:00
parent 993013774f
commit 67cb93a28c
7 changed files with 133 additions and 29 deletions

View File

@@ -247,6 +247,14 @@ class EventType(GrampsType):
"""
return self.value == self.MARRIAGE
def is_marriage_fallback(self):
"""
Returns True if EventType is a marriage fallback, False
otherwise.
"""
return self.value in [self.ENGAGEMENT,
self.MARR_ALT]
def is_divorce(self):
"""
Returns True if EventType is DIVORCE, False otherwise.

View File

@@ -379,7 +379,7 @@ class Family(SourceBase, NoteBase, MediaBase, AttributeBase, LdsOrdBase,
father and mother in the relationship.
"""
return self.type
def set_father_handle(self, person_handle):
"""
Set the database handle for :class:`~gen.lib.person.Person` that corresponds to male of the

View File

@@ -68,3 +68,53 @@ def get_death_or_fallback(db, person, format=None):
return event
return None
def get_marriage_ref(db, family):
"""
Return a reference to the primary MARRIAGE event of the family.
"""
from gen.lib import EventType, EventRoleType
for event_ref in family.get_event_ref_list():
event = db.get_event_from_handle(event_ref.ref)
if (event and event.get_type() == EventType.MARRIAGE and
(event_ref.get_role() == EventRoleType.FAMILY or
event_ref.get_role() == EventRoleType.PRIMARY)):
return event_ref
return None
def get_primary_event_ref_list(db, family):
"""
Return a reference to the primary events of the family.
"""
from gen.lib import EventRoleType
retval = []
for event_ref in family.get_event_ref_list():
event = db.get_event_from_handle(event_ref.ref)
if (event and
(event_ref.get_role() == EventRoleType.FAMILY or
event_ref.get_role() == EventRoleType.PRIMARY)):
retval.append(event_ref)
return retval
def get_marriage_or_fallback(db, family, format=None):
"""
Get a MARRIAGE event from a family, or fallback to an
event around the time of marriage.
"""
from gen.lib import EventRoleType
marriage_ref = get_marriage_ref(db, family)
if marriage_ref: # regular marriage found
event = db.get_event_from_handle(marriage_ref.ref)
if event:
return event
# now search the event list for fallbacks
for event_ref in get_primary_event_ref_list(db, family):
if event_ref:
event = db.get_event_from_handle(event_ref.ref)
if (event
and event.type.is_marriage_fallback()
and (event_ref.role == EventRoleType.FAMILY or
event_ref.role == EventRoleType.PRIMARY)):
if format:
event.date.format = format
return event
return None