From 7b85d8e4afc60f4ad629369143ee1c9f6d91967b Mon Sep 17 00:00:00 2001 From: "Rob G. Healey" Date: Sat, 14 Feb 2009 00:57:34 +0000 Subject: [PATCH] Added date validation to these three reports in collect_data(). svn: r11983 --- src/plugins/drawreport/Calendar.py | 48 ++++++++------- src/plugins/textreport/BirthdayReport.py | 38 ++++++------ src/plugins/webreport/WebCal.py | 77 +++++++++++------------- 3 files changed, 79 insertions(+), 84 deletions(-) diff --git a/src/plugins/drawreport/Calendar.py b/src/plugins/drawreport/Calendar.py index 759b32085..233516822 100644 --- a/src/plugins/drawreport/Calendar.py +++ b/src/plugins/drawreport/Calendar.py @@ -256,7 +256,7 @@ class Calendar(Report): birth_event = self.database.get_event_from_handle(birth_ref.ref) birth_date = birth_event.get_date_object() - if self.birthdays and birth_date is not None: + if (self.birthdays and birth_date is not None and birth_date.is_valid()): year = birth_date.get_year() month = birth_date.get_month() day = birth_date.get_day() @@ -329,31 +329,33 @@ class Calendar(Report): for event_ref in fam.get_event_ref_list(): event = self.database.get_event_from_handle(event_ref.ref) event_obj = event.get_date_object() - year = event_obj.get_year() - month = event_obj.get_month() - day = event_obj.get_day() - prob_alive_date = gen.lib.Date(self.year, month, day) + if event_obj.is_valid(): + year = event_obj.get_year() + month = event_obj.get_month() + day = event_obj.get_day() - nyears = self.year - year - if nyears == 0: - text = _("%(spouse)s and\n %(person)s, wedding") % { - 'spouse' : spouse_name, - 'person' : short_name, - } - else: - text = (ngettext("%(spouse)s and\n %(person)s, %(nyears)d", - "%(spouse)s and\n %(person)s, %(nyears)d", nyears) - % {'spouse' : spouse_name, - 'person' : short_name, - 'nyears' : nyears}) + prob_alive_date = gen.lib.Date(self.year, month, day) + + nyears = self.year - year + if nyears == 0: + text = _('%(spouse)s and\n %(person)s, wedding') % { + 'spouse' : spouse_name, + 'person' : short_name, + } + else: + text = (ngettext("%(spouse)s and\n %(person)s, %(nyears)d", + "%(spouse)s and\n %(person)s, %(nyears)d", nyears) + % {'spouse' : spouse_name, + 'person' : short_name, + 'nyears' : nyears}) - alive1 = probably_alive(person, self.database, \ - prob_alive_date) - alive2 = probably_alive(spouse, self.database, \ - prob_alive_date) - if ((self.alive and alive1 and alive2) or not self.alive): - self.add_day_item(text, month, day) + alive1 = probably_alive(person, self.database, \ + prob_alive_date) + alive2 = probably_alive(spouse, self.database, \ + prob_alive_date) + if ((self.alive and alive1 and alive2) or not self.alive): + self.add_day_item(text, month, day) #------------------------------------------------------------------------ # diff --git a/src/plugins/textreport/BirthdayReport.py b/src/plugins/textreport/BirthdayReport.py index 98efd8582..cc69d2723 100644 --- a/src/plugins/textreport/BirthdayReport.py +++ b/src/plugins/textreport/BirthdayReport.py @@ -203,7 +203,7 @@ class CalendarReport(Report): birth_event = self.database.get_event_from_handle(birth_ref.ref) birth_date = birth_event.get_date_object() - if self.birthdays and birth_date is not None: + if (self.birthdays and birth_date is not None and birth_date.is_valid()): year = birth_date.get_year() month = birth_date.get_month() day = birth_date.get_day() @@ -290,24 +290,26 @@ class CalendarReport(Report): month = event_obj.get_month() day = event_obj.get_day() nyears = self.year - year - if nyears == 0: - text = _("%(spouse)s and\n %(person)s, wedding") % { - 'spouse' : spouse_name, - 'person' : short_name} - else: - text = (ngettext("%(spouse)s and\n %(person)s, %(nyears)d", - "%(spouse)s and\n %(person)s, %(nyears)d", nyears) - % {'spouse' : spouse_name, - 'person' : short_name, - 'nyears' : nyears}) + + if event_obj.is_valid(): + if nyears == 0: + text = _("%(spouse)s and\n %(person)s, wedding") % { + 'spouse' : spouse_name, + 'person' : short_name} + else: + text = (ngettext("%(spouse)s and\n %(person)s, %(nyears)d", + "%(spouse)s and\n %(person)s, %(nyears)d", nyears) + % {'spouse' : spouse_name, + 'person' : short_name, + 'nyears' : nyears}) - prob_alive_date = gen.lib.Date(self.year, month, day) - alive1 = probably_alive(person, self.database, \ - prob_alive_date) - alive2 = probably_alive(spouse, self.database, \ - prob_alive_date) - if (self.alive and alive1 and alive2) or not self.alive: - self.add_day_item(text, month, day) + prob_alive_date = gen.lib.Date(self.year, month, day) + alive1 = probably_alive(person, self.database, \ + prob_alive_date) + alive2 = probably_alive(spouse, self.database, \ + prob_alive_date) + if (self.alive and alive1 and alive2) or not self.alive: + self.add_day_item(text, month, day) #------------------------------------------------------------------------ # diff --git a/src/plugins/webreport/WebCal.py b/src/plugins/webreport/WebCal.py index 293ad9ef0..fa0b48f0b 100644 --- a/src/plugins/webreport/WebCal.py +++ b/src/plugins/webreport/WebCal.py @@ -402,7 +402,6 @@ class WebCalReport(Report): nav_text = get_short_month_name(nav_text) # Figure out if we need
  • or just plain
  • - print url_fname, currentsection if url_fname == currentsection: cs = True @@ -1027,46 +1026,40 @@ class WebCalReport(Report): birth_date = birth_event.get_date_object() # determine birthday information??? - if self.birthday and birth_date is not None: + if (self.birthday and birth_date is not None and birth_date.is_valid()): - # determine if birthdadate is a valid date??? - complete_date = False - if birth_date.is_valid(): - complete_date = True - if complete_date: + year = birth_date.get_year() + month = birth_date.get_month() + day = birth_date.get_day() - year = birth_date.get_year() - month = birth_date.get_month() - day = birth_date.get_day() + prob_alive_date = gen.lib.Date(this_year, month, day) - prob_alive_date = gen.lib.Date(this_year, month, day) + # add some things to handle maiden name: + father_surname = None # husband, actually + sex = person.gender + if sex == gen.lib.Person.FEMALE: - # add some things to handle maiden name: - father_surname = None # husband, actually - sex = person.gender - if sex == gen.lib.Person.FEMALE: - - # get husband's last name: - if self.maiden_name in ['spouse_first', 'spouse_last']: - if len(family_list) > 0: - if self.maiden_name == 'spouse_first': - fhandle = family_list[0] - else: - fhandle = family_list[-1] - fam = self.database.get_family_from_handle(fhandle) - father_handle = fam.get_father_handle() - mother_handle = fam.get_mother_handle() - if mother_handle == person_handle: - if father_handle: - father = self.database.get_person_from_handle(father_handle) - if father != None: - father_name = father.primary_name - father_surname = _get_regular_surname(sex, father_name) - short_name = _get_short_name(person, father_surname) - alive = probably_alive(person, self.database, prob_alive_date) + # get husband's last name: + if self.maiden_name in ['spouse_first', 'spouse_last']: + if len(family_list) > 0: + if self.maiden_name == 'spouse_first': + fhandle = family_list[0] + else: + fhandle = family_list[-1] + fam = self.database.get_family_from_handle(fhandle) + father_handle = fam.get_father_handle() + mother_handle = fam.get_mother_handle() + if mother_handle == person_handle: + if father_handle: + father = self.database.get_person_from_handle(father_handle) + if father != None: + father_name = father.primary_name + father_surname = _get_regular_surname(sex, father_name) + short_name = _get_short_name(person, father_surname) + alive = probably_alive(person, self.database, prob_alive_date) + if (self.alive and alive) or not self.alive: text = _('%(short_name)s') % {'short_name' : short_name} - if (self.alive and alive) or not self.alive: - self.add_day_item(text, year, month, day, 'Birthday') + self.add_day_item(text, year, month, day, 'Birthday') # add anniversary if requested if self.anniv: @@ -1095,12 +1088,7 @@ class WebCalReport(Report): prob_alive_date = gen.lib.Date(this_year, month, day) - # determine if anniversary date is a valid date??? - complete_date = False if event_obj.is_valid(): - complete_date = True - if complete_date: - text = _('%(spouse)s and %(person)s') % { 'spouse' : spouse_name, 'person' : short_name} @@ -1523,7 +1511,8 @@ def get_marrital_status(db, family): """ Returns the marital status of two people, a couple - are_married will either be the marriage event or None if not married anymore + are_married will either be the marriage event + or None if not married anymore """ are_married = None @@ -1544,7 +1533,8 @@ def get_first_day_of_month(year, month): It can also be a day in the previous month. """ - current_date = datetime.date(year, month, 1) # first day of the month + # first day of the month + current_date = datetime.date(year, month, 1) # monthinfo is filled using standard Python library # calendar.monthcalendar. It fills a list of 7-day-lists. The first day @@ -1586,6 +1576,7 @@ def _has_webpage_extension(url, ext): determine if a filename has an extension or not... url = filename to be checked + ext -- extension to process if there is one or not """ if url.endswith(ext):