From c94c9c588ee651cfd1f4e7d828df82e69332f971 Mon Sep 17 00:00:00 2001 From: "Rob G. Healey" Date: Mon, 14 Dec 2009 08:47:01 +0000 Subject: [PATCH] Cleanup work on attributes and a comment on sort_event_types() in NarrativeWeb. Clean up work on calendar_build() in WebCal. svn: r13796 --- src/plugins/webreport/NarrativeWeb.py | 15 +- src/plugins/webreport/WebCal.py | 263 +++++++++++++------------- 2 files changed, 133 insertions(+), 145 deletions(-) diff --git a/src/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index 03ddf809f..badd314a5 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -5238,13 +5238,7 @@ class NavWebReport(Report): # get family attributes attribute_list.extend(family.get_attribute_list() ) - for evt_ref in family.get_event_ref_list(): - event = db.get_event_from_handle(evt_ref.ref) - - # get events attributes - attribute_list.extend(event.get_attribute_list() ) - - # attributes to its caller + # return attributes to its caller return attribute_list def person_pages(self, ind_list, place_list, source_list): @@ -5263,8 +5257,7 @@ class NavWebReport(Report): # get attributes for each person attribute_list = self.build_attributes(person) - IndividualPage(self, self.title, person, ind_list, place_list, source_list, - attribute_list) + IndividualPage(self, self.title, person, ind_list, place_list, source_list, attribute_list) if self.inc_gendex: self.progress.set_pass(_('Creating GENDEX file'), len(ind_list)) @@ -6082,7 +6075,7 @@ def sort_people(db, handle_list): def sort_event_types(db, event_types, event_handle_list): """ - sort a list of event types and group them by their type + sort a list of event types and their associated event handles @param: event_types -- a dict of event types @param: event_handle_list -- all event handles in this database @@ -6095,7 +6088,7 @@ def sort_event_types(db, event_types, event_handle_list): event = db.get_event_from_handle(handle) etype = str(event.type) - # add the stuff from this event + # add (gramps_id, date, handle) from this event if etype in event_dict: event_dict[etype].append( (event.gramps_id, event.get_date_object(), handle) diff --git a/src/plugins/webreport/WebCal.py b/src/plugins/webreport/WebCal.py index ffc377128..a985b2bdf 100644 --- a/src/plugins/webreport/WebCal.py +++ b/src/plugins/webreport/WebCal.py @@ -586,9 +586,10 @@ class WebCalReport(Report): def calendar_build(self, cal, year, month): """ This does the work of building the calendar - 'cal' - one of "yg" year_glance(), or "wc" webcalendar() - 'year' -- year being created - 'month' - month number 1, 2, .., 12 + + @param: cal - either "yg" year_glance(), or "wc" webcalendar() + @param: year -- year being created + @param: month - month number 1, 2, .., 12 """ # define names for long and short month names @@ -653,180 +654,174 @@ class WebCalReport(Report): th_txt = '%s %d' % (month_name, year) # begin calendar table and table head - cal_table = Html("table", class_ = "calendar", id = month_name) - thead = Html("thead") - cal_table += thead + with Html("table", class_ = "calendar", id = month_name) as table: - trow = Html("tr") + ( - Html('th', th_txt, class_ ='monthName', colspan=7, inline = True) - ) - thead += trow + thead = Html("thead") + table += thead - # Calendar weekday names header - trow = Html("tr") - thead += trow - - for day_col in range(7): - dayclass = get_class_for_daycol(day_col) - dayname = get_name_for_daycol(day_col) - trow += Html('th', class_ =dayclass, inline = True) + ( - Html('abbr', dayname[0], title=dayname) + trow = Html("tr") + ( + Html("th", th_txt, class_ ='monthName', colspan=7, inline = True) ) + thead += trow - # begin table body - tbody = Html("tbody") - cal_table += tbody - - # get first of the month and month information - current_date, current_ord, monthinfo = get_first_day_of_month(year, month) - - # begin calendar table rows, starting week0 - nweeks = len(monthinfo) - for week_row in range(0, nweeks): - week = monthinfo[week_row] - - # if you look this up in wikipedia, the first week is called week0 - trow = Html("tr", class_ = "week%02d" % week_row) - tbody += trow - - # begin calendar day column - for day_col in range(0, 7): + # Calendar weekday names header + trow = Html("tr") + thead += trow + + for day_col in range(7): dayclass = get_class_for_daycol(day_col) + dayname = get_name_for_daycol(day_col) + trow += Html("th", class_ =dayclass, inline = True) + ( + Html('abbr', dayname[0], title=dayname) + ) - # day number, can also be a zero -- a day before or after month - day = week[day_col] + # begin table body + tbody = Html("tbody") + table += tbody - # start the beginning variable for , table cell - tcell_id = "%s%02d" % (abbr_month_name, day) + # get first of the month and month information + current_date, current_ord, monthinfo = get_first_day_of_month(year, month) - # add calendar date division - datediv = Html("div", day, class_ = "date", inline = True) + # begin calendar table rows, starting week0 + nweeks = len(monthinfo) + for week_row in range(0, nweeks): + week = monthinfo[week_row] - # a day in the previous or next month - if day == 0: + # if you look this up in wikipedia, the first week is called week0 + trow = Html("tr", class_ = "week%02d" % week_row) + tbody += trow - # day in previous month - if week_row == 0: - specday = __get_previous_month_day(year, month, day_col) - specclass = "previous " + dayclass + # begin calendar day column + for day_col in range(0, 7): + dayclass = get_class_for_daycol(day_col) - # a day in the next month - elif week_row == (nweeks-1): - specday = __get_next_month_day(year, month, day_col) - specclass = "next " + dayclass + # day number, can also be a zero -- a day before or after month + day = week[day_col] - # continue table cell, , without id tag - tcell = Html('td', class_ = specclass, inline = True) + ( + # start the beginning variable for , table cell + tcell_id = "%s%02d" % (abbr_month_name, day) - # adds date for previous and next month days - Html("div", specday, class_ = "date", inline = True) - ) - trow += tcell + # add calendar date division + datediv = Html("div", day, class_ = "date", inline = True) - # normal day number in current month - else: - thisday = datetime.date.fromordinal(current_ord) + # a day in the previous or next month + if day == 0: - # Something this month - if thisday.month == month: - holiday_list = self.holidays.get(month, {}).get(thisday.day, []) - bday_anniv_list = self.calendar.get(month, {}).get(thisday.day, []) + # day in previous month + specday = __get_previous_month_day(year, month, day_col) if week_row == 0 \ + else __get_next_month_day(year, month, day_col) - # date is an instance because of subtracting abilities in date.py - event_date = Date() - event_date.set_yr_mon_day(thisday.year, thisday.month, thisday.day) - # get events for this day - day_list = get_day_list(event_date, holiday_list, bday_anniv_list) + specclass = "previous " if week_row == 0 else "Next " + specclass += dayclass - # is there something this day? - if day_list: + # continue table cell, , without id tag + tcell = Html("td", class_ = specclass, inline = True) + ( - hilightday = 'highlight ' + dayclass - tcell = Html('td', id = tcell_id, class_ = hilightday) + # adds date for previous and next month days + Html("div", specday, class_ = "date", inline = True) + ) - # Year at a Glance - if cal == "yg": + # normal day number in current month + else: + thisday = datetime.date.fromordinal(current_ord) - # make one day pages and hyperlink - if self.makeoneday: + # Something this month + if thisday.month == month: + holiday_list = self.holidays.get(month, {}).get(thisday.day, []) + bday_anniv_list = self.calendar.get(month, {}).get(thisday.day, []) - # create yyyymmdd date string for - # "One Day" calendar page filename - fname_date = '%04d%02d%02d' % (year,month,day) + self.ext + # date is an instance because of subtracting abilities in date.py + event_date = Date(thisday.year, thisday.month, thisday.day) - # create hyperlink to one_day() - fname_date = full_month_name + '/' + fname_date - hyper = Html("a", datediv, href=fname_date, inline = True) - tcell += hyper + # get events for this day + day_list = get_day_list(event_date, holiday_list, bday_anniv_list) - # only year_glance() needs this to create the one_day() pages - self.one_day(event_date, fname_date, day_list) + # is there something this day? + if day_list: - # just year_glance(), but no one_day() pages + hilightday = 'highlight ' + dayclass + tcell = Html("td", id = tcell_id, class_ = hilightday) + + # Year at a Glance + if cal == "yg": + + # make one day pages and hyperlink + if self.makeoneday: + + # create yyyymmdd date string for + # "One Day" calendar page filename + fname_date = '%04d%02d%02d' % (year,month,day) + self.ext + + # create hyperlink to one_day() + fname_date = full_month_name + '/' + fname_date + hyper = Html("a", datediv, href=fname_date, inline = True) + tcell += hyper + + # only year_glance() needs this to create the one_day() pages + self.one_day(event_date, fname_date, day_list) + + # just year_glance(), but no one_day() pages + else: + + # continue table cell, , without id tag + tcell = Html("td", class_ = hilightday, inline = True) + ( + + # adds date division + Html("div", day, class_ = "date", inline = True) + ) + + # WebCal else: - # continue table cell, , without id tag - tcell = Html('td', class_ = hilightday, inline = True) + ( + # add date to table cell + tcell += datediv - # adds date division - Html("div", day, class_ = "date", inline = True) - ) + # list the events + unordered = Html("ul") + tcell += unordered - # WebCal - else: + for nyears, date, text, event in day_list: + unordered += Html("li", text, inline = False if event == 'Anniversary' + else True) - # add date to table cell - tcell += datediv + # no events for this day + else: - # list the events - unordered = Html("ul") - tcell += unordered + # create empty day with date + tcell = Html("td", class_ = dayclass, inline = True) + ( - for nyears, date, text, event in day_list: - unordered += Html("li", text, inline = False if event == 'Anniversary' - else True) + # adds date division + Html("div", day, class_ = "date", inline = True) + ) - # no events for this day - else: - - # create empty day with date - tcell = Html('td', class_ = dayclass, inline = True) + ( + # nothing for this month + else: + tcell = Html("td", class_ = dayclass) + ( # adds date division Html("div", day, class_ = "date", inline = True) ) - # nothing for this month - else: - tcell = Html('td', class_ = dayclass) + ( - - # adds date division - Html("div", day, class_ = "date", inline = True) - ) - # attach table cell to table row # close the day column trow += tcell - # change day number - current_ord += 1 + # change day number + current_ord += 1 - if cal == "yg": - # Fill up till we have 6 rows, so that the months align properly - for weeks in xrange(nweeks, 6): - six_weeks = Html("tr", class_ = "week%02d" % (weeks + 1)) - tbody += six_weeks + if cal == "yg": + for weeks in xrange(nweeks, 6): - for emptydays in xrange(6): - six_weeks += Html("td", class_ = "emptyDays", inline = True) + # each calendar must have six weeks for proper styling and alignment + with Html("tr", class_ = "week%02d" % (weeks + 1)) as six_weeks: + tbody += six_weeks - # create table cell - for col in xrange(6): - six_weeks += Html("td", class_ = "EmptyDays", inline = True) + for emptydays in range(7): + six_weeks += Html("td", class_ = "emptyDays", inline = True) - # return calendar table to its caller - return cal_table + # return calendar table to its callers + return table # --------------------------------------------------------------------------------------- # Creates the Web Calendars; the primary part of this plugin @@ -882,7 +877,7 @@ class WebCalReport(Report): monthly_calendar += cal_foot trow = Html("tr") + ( - Html('td', note, colspan=7, inline = True) + Html("td", note, colspan=7, inline = True) ) cal_foot += trow @@ -1190,10 +1185,10 @@ class WebCalReport(Report): if event_obj.is_valid(): if self.link_to_narweb: - spouse_name = Html('a', spouse_name, + spouse_name = Html("a", spouse_name, href=self.build_url_fname_html(spouse_handle, 'ppl', prefix=self.narweb_prefix)) - short_name = Html('a', short_name, + short_name = Html("a", short_name, href=self.build_url_fname_html(person.handle, 'ppl', prefix=self.narweb_prefix)) text = _('%(spouse)s and %(person)s') % {