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:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user