* src/plugins/WebPage.py: Convert to ids. Call probably_alive

with db as an argument. Move by_date inside the class (needs db).
* src/RelLib.py: Correct probably_alive to ids.


svn: r3003
This commit is contained in:
Alex Roitman 2004-03-11 04:24:03 +00:00
parent d2a9753e1c
commit ef1928e972
3 changed files with 91 additions and 60 deletions

View File

@ -5,7 +5,9 @@
* src/GenericFilter.py: Convert to ids. * src/GenericFilter.py: Convert to ids.
* src/plugins/FilterEditor.py: Convert to ids. * src/plugins/FilterEditor.py: Convert to ids.
* src/plugins/WebPage.py: Convert to ids. * src/plugins/WebPage.py: Convert to ids. Call probably_alive
with db as an argument. Move by_date inside the class (needs db).
* src/RelLib.py: Correct probably_alive to ids.
2004-03-10 Leonid Mamtchenkov <leonid@leonid.maks.net> 2004-03-10 Leonid Mamtchenkov <leonid@leonid.maks.net>
* src/plugins/WebPage.py: Link main photo to the original. * src/plugins/WebPage.py: Link main photo to the original.

View File

@ -1489,12 +1489,14 @@ class Person(SourceNote):
def get_lds_sealing(self): def get_lds_sealing(self):
return self.lds_seal return self.lds_seal
def probably_alive(self): def probably_alive(self,db):
"""Returns true if the person may be alive.""" """Returns true if the person may be alive."""
if not self.death.is_empty (): if self.death_id:
return 0 return 0
if self.birth.get_date() != "": if self.birth_id:
return not_too_old(self.birth.get_date_object().get_start_date()) birth = db.find_event_from_id(self.birth_id)
if birth.get_date() != "":
return not_too_old(birth.get_date_object().get_start_date())
# Neither birth nor death events are available. Try looking # Neither birth nor death events are available. Try looking
# for descendants that were born more than a lifespan ago. # for descendants that were born more than a lifespan ago.
@ -1503,20 +1505,26 @@ class Person(SourceNote):
max_generation = 60 max_generation = 60
max_age_difference = 60 max_age_difference = 60
def descendants_too_old (person, years): def descendants_too_old (person, years):
for family in person.get_family_id_list(): for family_id in person.get_family_id_list():
for child in family.get_child_id_list(): family = db.find_family_from_id(family_id)
if child.birth.get_date () != "": for child_id in family.get_child_id_list():
d = SingleDate (child.birth.get_date_object (). child = db.find_person_from_id(child_id)
if child.birth_id:
child_birth = db.find_event_from_id(child.birth_id)
if child_birth.get_date () != "":
d = SingleDate (child_birth.get_date_object ().
get_start_date ()) get_start_date ())
d.setYear (d.getYear () - years) d.setYear (d.getYear () - years)
if not not_too_old (d): if not not_too_old (d):
return 1 return 1
if child.death.get_date () != "": if child.death_id:
d = SingleDate (child.death.get_date_object (). child_death = db.find_event_from_id(child.death_id)
if child_death.get_date () != "":
d = SingleDate (child_death.get_date_object ().
get_start_date ()) get_start_date ())
if not not_too_old (d): if not not_too_old (d):
return 1 return 1
if descendants_too_old (child, years + min_generation): if descendants_too_old (child, years + min_generation):
return 1 return 1
@ -1526,51 +1534,63 @@ class Person(SourceNote):
# What about their parents? # What about their parents?
def parents_too_old (person, age_difference): def parents_too_old (person, age_difference):
family = person.get_main_parents_family_id () family_id = person.get_main_parents_family_id ()
if family: if family_id:
for parent in [family.get_father_id (), family.get_mother_id ()]: family = db.find_family_from_id(family_id)
if not parent: for parent_id in [family.get_father_id (), family.get_mother_id ()]:
if not parent_id:
continue continue
if parent.birth.get_date () != "": parent = db.find_person_from_id(parent_id)
d = SingleDate (parent.birth.get_date_object (). if parent.birth_id:
parent_birth = db.find_event_from_id(parent.birth_id)
if parent_birth.get_date () != "":
d = SingleDate (parent.birth.get_date_object ().
get_start_date ()) get_start_date ())
d.setYear (d.getYear () + max_generation + d.setYear (d.getYear () + max_generation +
age_difference) age_difference)
if not not_too_old (d): if not not_too_old (d):
return 1 return 1
if parent.death.get_date () != "": if parent.death_id:
d = SingleDate (parent.death.get_date_object (). parent_death = db.find_event_from_id(parent.death_id)
if parent_death.get_date () != "":
d = SingleDate (parent.death.get_date_object ().
get_start_date ()) get_start_date ())
d.setYear (d.getYear () + age_difference) d.setYear (d.getYear () + age_difference)
if not not_too_old (d): if not not_too_old (d):
return 1 return 1
if parents_too_old (self, 0): if parents_too_old (self, 0):
return 0 return 0
# As a last resort, trying seeing if their spouse's age gives # As a last resort, trying seeing if their spouse's age gives
# any clue. # any clue.
for family in self.get_family_id_list (): for family_id in self.get_family_id_list ():
for spouse in [family.get_father_id (), family.get_mother_id ()]: family = db.find_family_from_id(family_id)
if not spouse: for spouse_id in [family.get_father_id (), family.get_mother_id ()]:
if not spouse_id:
continue continue
if spouse == self: if spouse_id == self.id:
continue continue
if spouse.birth.get_date () != "": spouse = db.find_person_from_id(spouse_id)
d = SingleDate (spouse.birth.get_date_object(). if spouse.birth_id:
spouse_birth = db.find_event_from_id(spouse.birth_id)
if spouse_birth.get_date () != "":
d = SingleDate (spouse.birth.get_date_object().
get_start_date ()) get_start_date ())
d.setYear (d.getYear () + max_age_difference) d.setYear (d.getYear () + max_age_difference)
if not not_too_old (d): if not not_too_old (d):
return 0 return 0
if spouse.death.get_date () != "": if spouse.death_id:
d = SingleDate (spouse.birth.get_date_object(). spouse_death = db.find_event_from_id(spouse.death_id)
if spouse_death.get_date () != "":
d = SingleDate (spouse.birth.get_date_object().
get_start_date ()) get_start_date ())
d.setYear (d.getYear () - min_generation) d.setYear (d.getYear () - min_generation)
if not not_too_old (d): if not not_too_old (d):
return 0 return 0
if parents_too_old (spouse, max_age_difference): if parents_too_old (spouse, max_age_difference):
return 0 return 0

View File

@ -70,14 +70,6 @@ _month = [
_hline = " " # Everything is underlined, so use blank _hline = " " # Everything is underlined, so use blank
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
def by_date(a,b):
return Date.compare_dates(a.get_date_object(),b.get_date_object())
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# HtmlLinkDoc # HtmlLinkDoc
@ -119,7 +111,7 @@ class IndividualPage:
self.id_link = idlink self.id_link = idlink
self.list = map self.list = map
self.private = private self.private = private
self.alive = person.probably_alive() and restrict self.alive = person.probably_alive(db) and restrict
self.photos = (photos == 2) or (photos == 1 and not self.alive) self.photos = (photos == 2) or (photos == 1 and not self.alive)
self.usecomments = not uc self.usecomments = not uc
self.dir = dir_name self.dir = dir_name
@ -134,6 +126,18 @@ class IndividualPage:
self.doc.set_title(_("Summary of %s") % name) self.doc.set_title(_("Summary of %s") % name)
self.doc.fix_title() self.doc.fix_title()
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
def by_date(self,a_id,b_id):
if not (a_id and b_id):
return 0
a = self.db.find_event_from_id(a_id)
b = self.db.find_event_from_id(b_id)
return Date.compare_dates(a.get_date_object(),b.get_date_object())
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# #
# #
@ -490,10 +494,13 @@ class IndividualPage:
return return
count = 0 count = 0
event_list = [ self.person.get_birth(), self.person.get_death() ] event_id_list = [ self.person.get_birth_id(), self.person.get_death_id() ]
event_list = event_list + self.person.get_event_list() event_id_list = event_id_list + self.person.get_event_list()
event_list.sort(by_date) event_id_list.sort(self.by_date)
for event in event_list: for event_id in event_id_list:
if not event_id:
continue
event = self.db.find_event_from_id(event_id)
if event.get_privacy(): if event.get_privacy():
continue continue
name = _(event.get_name()) name = _(event.get_name())
@ -629,9 +636,11 @@ class IndividualPage:
self.doc.end_row() self.doc.end_row()
if not self.alive: if not self.alive:
for event in family.get_event_list(): for event_id in family.get_event_list():
if event.get_privacy() == 0: if event_id:
self.write_fam_fact(event) event = self.db.find_event_from_id(event_id)
if event.get_privacy() == 0:
self.write_fam_fact(event)
child_list = family.get_child_id_list() child_list = family.get_child_id_list()
if len(child_list) > 0: if len(child_list) > 0: