# HG changeset patch # User Paul Boddie # Date 1341957353 -7200 # Node ID 721a3ef14d202dcd4bc7bdd50408a33d2b0c3446 # Parent 1ae42f5a82a29fb3231889af783ca33982930843 Introduced aliases for output.append and request.write for clarity. diff -r 1ae42f5a82a2 -r 721a3ef14d20 EventAggregatorSupport.py --- a/EventAggregatorSupport.py Mon Jun 18 01:09:14 2012 +0200 +++ b/EventAggregatorSupport.py Tue Jul 10 23:55:53 2012 +0200 @@ -1712,12 +1712,14 @@ def _getCalendarPeriod(self, start_label, end_label, default_label): output = [] + append = output.append + if start_label: - output.append(start_label) + append(start_label) if end_label and start_label != end_label: if output: - output.append(" - ") - output.append(end_label) + append(" - ") + append(end_label) return "".join(output) or default_label def getCalendarPeriod(self): @@ -1757,6 +1759,7 @@ _ = request.getText output = [] + append = output.append # The full URL is needed for webcal links. @@ -1813,95 +1816,95 @@ # Download controls. - output.append(fmt.div(on=1, css_class="event-download-controls")) - - output.append(fmt.span(on=1, css_class="event-download")) - output.append(fmt.text(_("Download..."))) - output.append(fmt.div(on=1, css_class="event-download-popup")) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-types")) - output.append(fmt.span(on=1, css_class="event-download-webcal")) - output.append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=1, css_class="event-download-http")) - output.append(linkToPage(request, page, _("http"), download_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) # end types - output.append(fmt.span(on=1, css_class="event-download-label")) - output.append(fmt.text(_("Download this view"))) - output.append(fmt.span(on=0)) # end label - output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-types")) - output.append(fmt.span(on=1, css_class="event-download-webcal")) - output.append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_all_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=1, css_class="event-download-http")) - output.append(linkToPage(request, page, _("http"), download_all_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) # end types - output.append(fmt.span(on=1, css_class="event-download-label")) - output.append(fmt.text(_("Download this calendar"))) - output.append(fmt.span(on=0)) # end label - output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(original_calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=1, css_class="event-download-period-raw")) - output.append(fmt.text(raw_calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-link")) - output.append(linkToPage(request, page, _("Edit download options..."), download_dialogue_link)) - output.append(fmt.span(on=0)) # end label - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=0)) # end of pop-up - output.append(fmt.span(on=0)) # end of download + append(fmt.div(on=1, css_class="event-download-controls")) + + append(fmt.span(on=1, css_class="event-download")) + append(fmt.text(_("Download..."))) + append(fmt.div(on=1, css_class="event-download-popup")) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-types")) + append(fmt.span(on=1, css_class="event-download-webcal")) + append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_link)) + append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-download-http")) + append(linkToPage(request, page, _("http"), download_link)) + append(fmt.span(on=0)) + append(fmt.span(on=0)) # end types + append(fmt.span(on=1, css_class="event-download-label")) + append(fmt.text(_("Download this view"))) + append(fmt.span(on=0)) # end label + append(fmt.span(on=1, css_class="event-download-period")) + append(fmt.text(calendar_period)) + append(fmt.span(on=0)) + append(fmt.div(on=0)) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-types")) + append(fmt.span(on=1, css_class="event-download-webcal")) + append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_all_link)) + append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-download-http")) + append(linkToPage(request, page, _("http"), download_all_link)) + append(fmt.span(on=0)) + append(fmt.span(on=0)) # end types + append(fmt.span(on=1, css_class="event-download-label")) + append(fmt.text(_("Download this calendar"))) + append(fmt.span(on=0)) # end label + append(fmt.span(on=1, css_class="event-download-period")) + append(fmt.text(original_calendar_period)) + append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-download-period-raw")) + append(fmt.text(raw_calendar_period)) + append(fmt.span(on=0)) + append(fmt.div(on=0)) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-link")) + append(linkToPage(request, page, _("Edit download options..."), download_dialogue_link)) + append(fmt.span(on=0)) # end label + append(fmt.div(on=0)) + + append(fmt.div(on=0)) # end of pop-up + append(fmt.span(on=0)) # end of download # Subscription controls. - output.append(fmt.span(on=1, css_class="event-download")) - output.append(fmt.text(_("Subscribe..."))) - output.append(fmt.div(on=1, css_class="event-download-popup")) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-label")) - output.append(linkToPage(request, page, _("Subscribe to this view"), subscribe_link)) - output.append(fmt.span(on=0)) # end label - output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-label")) - output.append(linkToPage(request, page, _("Subscribe to this calendar"), subscribe_all_link)) - output.append(fmt.span(on=0)) # end label - output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(original_calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=1, css_class="event-download-period-raw")) - output.append(fmt.text(raw_calendar_period)) - output.append(fmt.span(on=0)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=1, css_class="event-download-item")) - output.append(fmt.span(on=1, css_class="event-download-link")) - output.append(linkToPage(request, page, _("Edit subscription options..."), subscribe_dialogue_link)) - output.append(fmt.span(on=0)) # end label - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=0)) # end of pop-up - output.append(fmt.span(on=0)) # end of download - - output.append(fmt.div(on=0)) # end of controls + append(fmt.span(on=1, css_class="event-download")) + append(fmt.text(_("Subscribe..."))) + append(fmt.div(on=1, css_class="event-download-popup")) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-label")) + append(linkToPage(request, page, _("Subscribe to this view"), subscribe_link)) + append(fmt.span(on=0)) # end label + append(fmt.span(on=1, css_class="event-download-period")) + append(fmt.text(calendar_period)) + append(fmt.span(on=0)) + append(fmt.div(on=0)) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-label")) + append(linkToPage(request, page, _("Subscribe to this calendar"), subscribe_all_link)) + append(fmt.span(on=0)) # end label + append(fmt.span(on=1, css_class="event-download-period")) + append(fmt.text(original_calendar_period)) + append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-download-period-raw")) + append(fmt.text(raw_calendar_period)) + append(fmt.span(on=0)) + append(fmt.div(on=0)) + + append(fmt.div(on=1, css_class="event-download-item")) + append(fmt.span(on=1, css_class="event-download-link")) + append(linkToPage(request, page, _("Edit subscription options..."), subscribe_dialogue_link)) + append(fmt.span(on=0)) # end label + append(fmt.div(on=0)) + + append(fmt.div(on=0)) # end of pop-up + append(fmt.span(on=0)) # end of download + + append(fmt.div(on=0)) # end of controls return "".join(output) @@ -1918,6 +1921,7 @@ _ = request.getText output = [] + append = output.append start = self.calendar_start end = self.calendar_end @@ -1935,37 +1939,37 @@ # Write the controls. - output.append(fmt.div(on=1, css_class="event-view-controls")) - - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, help_page, _("Help"))) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, page, _("New event"), new_event_link)) - output.append(fmt.span(on=0)) + append(fmt.div(on=1, css_class="event-view-controls")) + + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, help_page, _("Help"))) + append(fmt.span(on=0)) + + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, page, _("New event"), new_event_link)) + append(fmt.span(on=0)) if self.mode != "calendar": - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, page, _("View as calendar"), calendar_link, onclick=calendar_update_link)) - output.append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, page, _("View as calendar"), calendar_link, onclick=calendar_update_link)) + append(fmt.span(on=0)) if self.mode != "list": - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, page, _("View as list"), list_link, onclick=list_update_link)) - output.append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, page, _("View as list"), list_link, onclick=list_update_link)) + append(fmt.span(on=0)) if self.mode != "table": - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, page, _("View as table"), table_link, onclick=table_update_link)) - output.append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, page, _("View as table"), table_link, onclick=table_update_link)) + append(fmt.span(on=0)) if self.mode != "map" and self.map_name: - output.append(fmt.span(on=1, css_class="event-view")) - output.append(linkToPage(request, page, _("View as map"), map_link, onclick=map_update_link)) - output.append(fmt.span(on=0)) - - output.append(fmt.div(on=0)) + append(fmt.span(on=1, css_class="event-view")) + append(linkToPage(request, page, _("View as map"), map_link, onclick=map_update_link)) + append(fmt.span(on=0)) + + append(fmt.div(on=0)) return "".join(output) @@ -1981,9 +1985,10 @@ if self.raw_calendar_start is None or self.raw_calendar_end is None: fmt = self.page.request.formatter output = [] - output.append(fmt.span(on=1)) - output.append(fmt.text(label)) - output.append(fmt.span(on=0)) + append = output.append + append(fmt.span(on=1)) + append(fmt.text(label)) + append(fmt.span(on=0)) return "".join(output) else: return self._writeCalendarHeading(label, self.calendar_start, self.calendar_end) @@ -2030,6 +2035,7 @@ _ = request.getText output = [] + append = output.append # Prepare navigation links. @@ -2073,24 +2079,24 @@ date_link = self.getNavigationLink(start, end) date_update_link = self.getUpdateLink(start, end) - output.append(fmt.span(on=1, css_class="previous")) - output.append(linkToPage(request, page, "<<", previous_set_link, onclick=previous_set_update_link)) - output.append(fmt.text(" ")) - output.append(linkToPage(request, page, "<", previous_link, onclick=previous_update_link)) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="next")) - output.append(linkToPage(request, page, ">", next_link, onclick=next_update_link)) - output.append(fmt.text(" ")) - output.append(linkToPage(request, page, ">>", next_set_link, onclick=next_set_update_link)) - output.append(fmt.span(on=0)) - - output.append(linkToPage(request, page, label, date_link, onclick=date_update_link)) + append(fmt.span(on=1, css_class="previous")) + append(linkToPage(request, page, "<<", previous_set_link, onclick=previous_set_update_link)) + append(fmt.text(" ")) + append(linkToPage(request, page, "<", previous_link, onclick=previous_update_link)) + append(fmt.span(on=0)) + + append(fmt.span(on=1, css_class="next")) + append(linkToPage(request, page, ">", next_link, onclick=next_update_link)) + append(fmt.text(" ")) + append(linkToPage(request, page, ">>", next_set_link, onclick=next_set_update_link)) + append(fmt.span(on=0)) + + append(linkToPage(request, page, label, date_link, onclick=date_update_link)) else: - output.append(fmt.span(on=1)) - output.append(fmt.text(label)) - output.append(fmt.span(on=0)) + append(fmt.span(on=1)) + append(fmt.text(label)) + append(fmt.span(on=0)) return "".join(output) @@ -2108,6 +2114,7 @@ _ = request.getText output = [] + append = output.append year, month, day = date.as_tuple() new_event_link = self.getNewEventLink(date) @@ -2119,7 +2126,7 @@ # Output the heading class. - output.append( + append( fmt.table_cell(on=1, attrs={ "class" : "event-day-heading event-day-%s" % (busy and "busy" or "empty"), "colspan" : "3" @@ -2127,26 +2134,26 @@ # Output the number and pop-up menu. - output.append(fmt.div(on=1, css_class="event-day-box")) - - output.append(fmt.span(on=1, css_class="event-day-number-popup")) - output.append(fmt.span(on=1, css_class="event-day-number-link")) - output.append(linkToPage(request, page, _("View day"), day_view_link, onclick=day_view_update_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=1, css_class="event-day-number-link")) - output.append(linkToPage(request, page, _("New event"), new_event_link)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-day-number")) - output.append(fmt.text(unicode(day))) - output.append(fmt.span(on=0)) - - output.append(fmt.div(on=0)) + append(fmt.div(on=1, css_class="event-day-box")) + + append(fmt.span(on=1, css_class="event-day-number-popup")) + append(fmt.span(on=1, css_class="event-day-number-link")) + append(linkToPage(request, page, _("View day"), day_view_link, onclick=day_view_update_link)) + append(fmt.span(on=0)) + append(fmt.span(on=1, css_class="event-day-number-link")) + append(linkToPage(request, page, _("New event"), new_event_link)) + append(fmt.span(on=0)) + append(fmt.span(on=0)) + + append(fmt.span(on=1, css_class="event-day-number")) + append(fmt.text(unicode(day))) + append(fmt.span(on=0)) + + append(fmt.div(on=0)) # End of heading. - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) return "".join(output) @@ -2169,6 +2176,7 @@ fmt = request.formatter output = [] + append = output.append event_details = event.getDetails() event_summary = event.getSummary(self.parent_name) @@ -2179,26 +2187,26 @@ # The event box contains the summary, alongside # other elements. - output.append(fmt.div(on=1, css_class="event-summary-box")) - output.append(fmt.div(on=1, css_class="event-summary", style=style)) + append(fmt.div(on=1, css_class="event-summary-box")) + append(fmt.div(on=1, css_class="event-summary", style=style)) if is_ambiguous: - output.append(fmt.icon("/!\\")) - - output.append(event.linkToEvent(request, event_summary)) - output.append(fmt.div(on=0)) + append(fmt.icon("/!\\")) + + append(event.linkToEvent(request, event_summary)) + append(fmt.div(on=0)) # Add a pop-up element for long summaries. - output.append(fmt.div(on=1, css_class="event-summary-popup", style=style)) + append(fmt.div(on=1, css_class="event-summary-popup", style=style)) if is_ambiguous: - output.append(fmt.icon("/!\\")) - - output.append(event.linkToEvent(request, event_summary)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=0)) + append(fmt.icon("/!\\")) + + append(event.linkToEvent(request, event_summary)) + append(fmt.div(on=0)) + + append(fmt.div(on=0)) return "".join(output) @@ -2209,13 +2217,15 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) - output.append(fmt.table_cell(on=1, attrs={"class" : "event-month-heading", "colspan" : "21"})) - - output.append(self.writeMonthHeading(year_month)) - - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_row(on=0)) + append = output.append + + append(fmt.table_row(on=1)) + append(fmt.table_cell(on=1, attrs={"class" : "event-month-heading", "colspan" : "21"})) + + append(self.writeMonthHeading(year_month)) + + append(fmt.table_cell(on=0)) + append(fmt.table_row(on=0)) return "".join(output) @@ -2226,14 +2236,16 @@ _ = request.getText output = [] - output.append(fmt.table_row(on=1)) + append = output.append + + append(fmt.table_row(on=1)) for weekday in range(0, 7): - output.append(fmt.table_cell(on=1, attrs={"class" : "event-weekday-heading", "colspan" : "3"})) - output.append(fmt.text(_(getDayLabel(weekday)))) - output.append(fmt.table_cell(on=0)) - - output.append(fmt.table_row(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-weekday-heading", "colspan" : "3"})) + append(fmt.text(_(getDayLabel(weekday)))) + append(fmt.table_cell(on=0)) + + append(fmt.table_row(on=0)) return "".join(output) def writeDayNumbers(self, first_day, number_of_days, month, coverage): @@ -2241,7 +2253,9 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) + append = output.append + + append(fmt.table_row(on=1)) for weekday in range(0, 7): day = first_day + weekday @@ -2250,9 +2264,9 @@ # Output out-of-month days. if day < 1 or day > number_of_days: - output.append(fmt.table_cell(on=1, + append(fmt.table_cell(on=1, attrs={"class" : "event-day-heading event-day-excluded", "colspan" : "3"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) # Output normal days. @@ -2260,11 +2274,11 @@ # Output the day heading, making a link to a new event # action. - output.append(self.writeDayNumberHeading(date, date in coverage)) + append(self.writeDayNumberHeading(date, date in coverage)) # End of day numbers. - output.append(fmt.table_row(on=0)) + append(fmt.table_row(on=0)) return "".join(output) def writeEmptyWeek(self, first_day, number_of_days): @@ -2272,7 +2286,9 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) + append = output.append + + append(fmt.table_row(on=1)) for weekday in range(0, 7): day = first_day + weekday @@ -2280,21 +2296,22 @@ # Output out-of-month days. if day < 1 or day > number_of_days: - output.append(fmt.table_cell(on=1, + append(fmt.table_cell(on=1, attrs={"class" : "event-day-content event-day-excluded", "colspan" : "3"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) # Output empty days. else: - output.append(fmt.table_cell(on=1, + append(fmt.table_cell(on=1, attrs={"class" : "event-day-content event-day-empty", "colspan" : "3"})) - output.append(fmt.table_row(on=0)) + append(fmt.table_row(on=0)) return "".join(output) def writeWeekSlots(self, first_day, number_of_days, month, week_end, week_slots): output = [] + append = output.append locations = week_slots.keys() locations.sort(sort_none_first) @@ -2309,11 +2326,11 @@ # Output each set. - output.append(self.writeWeekSlot(first_day, number_of_days, month, week_end, events)) + append(self.writeWeekSlot(first_day, number_of_days, month, week_end, events)) # Add a spacer. - output.append(self.writeWeekSpacer(first_day, number_of_days)) + append(self.writeWeekSpacer(first_day, number_of_days)) return "".join(output) @@ -2323,7 +2340,9 @@ fmt = request.formatter output = [] - output.append(fmt.table_row(on=1)) + append = output.append + + append(fmt.table_row(on=1)) # Then, output day details. @@ -2334,15 +2353,15 @@ # Skip out-of-month days. if day < 1 or day > number_of_days: - output.append(fmt.table_cell(on=1, + append(fmt.table_cell(on=1, attrs={"class" : "event-day-content event-day-excluded", "colspan" : "3"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) continue # Output the day. if date not in events: - output.append(fmt.table_cell(on=1, + append(fmt.table_cell(on=1, attrs={"class" : "event-day-content event-day-empty", "colspan" : "3"})) # Get event details for the current day. @@ -2385,8 +2404,8 @@ # Events starting today... else: - output.append(fmt.table_cell(on=1, attrs={"class" : "event-day-start-gap"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-day-start-gap"})) + append(fmt.table_cell(on=0)) # Calculate the span of this cell. # Events whose names appear on every day... @@ -2470,24 +2489,24 @@ if not (starts_today and ends_today): attrs["style"] = style - output.append(fmt.table_cell(on=1, attrs=attrs)) + append(fmt.table_cell(on=1, attrs=attrs)) # Output the event. if starts_today and ends_today or not hide_text: - output.append(self.writeEventSummaryBox(event)) - - output.append(fmt.table_cell(on=0)) + append(self.writeEventSummaryBox(event)) + + append(fmt.table_cell(on=0)) # Output end of day gap. if ends_today and not starts_today: - output.append(fmt.table_cell(on=1, attrs={"class" : "event-day-end-gap"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-day-end-gap"})) + append(fmt.table_cell(on=0)) # End of set. - output.append(fmt.table_row(on=0)) + append(fmt.table_row(on=0)) return "".join(output) def writeWeekSpacer(self, first_day, number_of_days): @@ -2495,7 +2514,9 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) + append = output.append + + append(fmt.table_row(on=1)) for weekday in range(0, 7): day = first_day + weekday @@ -2506,10 +2527,10 @@ if day < 1 or day > number_of_days: css_classes += " event-day-excluded" - output.append(fmt.table_cell(on=1, attrs={"class" : css_classes, "colspan" : "3"})) - output.append(fmt.table_cell(on=0)) - - output.append(fmt.table_row(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : css_classes, "colspan" : "3"})) + append(fmt.table_cell(on=0)) + + append(fmt.table_row(on=0)) return "".join(output) # Day layout methods. @@ -2519,13 +2540,15 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) - - output.append(fmt.table_cell(on=1, attrs={"class" : "event-full-day-heading", "colspan" : str(colspan)})) - output.append(self.writeDayHeading(date)) - output.append(fmt.table_cell(on=0)) - - output.append(fmt.table_row(on=0)) + append = output.append + + append(fmt.table_row(on=1)) + + append(fmt.table_cell(on=1, attrs={"class" : "event-full-day-heading", "colspan" : str(colspan)})) + append(self.writeDayHeading(date)) + append(fmt.table_cell(on=0)) + + append(fmt.table_row(on=0)) return "".join(output) def writeEmptyDay(self, date): @@ -2533,12 +2556,14 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_row(on=1)) - - output.append(fmt.table_cell(on=1, + append = output.append + + append(fmt.table_row(on=1)) + + append(fmt.table_cell(on=1, attrs={"class" : "event-day-content event-day-empty"})) - output.append(fmt.table_row(on=0)) + append(fmt.table_row(on=0)) return "".join(output) def writeDaySlots(self, date, full_coverage, day_slots): @@ -2553,6 +2578,7 @@ fmt = page.request.formatter output = [] + append = output.append locations = day_slots.keys() locations.sort(sort_none_first) @@ -2599,26 +2625,26 @@ # Output the locations. - output.append(fmt.table_row(on=1)) + append(fmt.table_row(on=1)) # Add a spacer. - output.append(self.writeDaySpacer(colspan=2, cls="location")) + append(self.writeDaySpacer(colspan=2, cls="location")) for location in locations: # Add spacers to the column spans. columns = len(day_slots[location]) * 2 - 1 - output.append(fmt.table_cell(on=1, attrs={"class" : "event-location-heading", "colspan" : str(columns)})) - output.append(fmt.text(location or "")) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-location-heading", "colspan" : str(columns)})) + append(fmt.text(location or "")) + append(fmt.table_cell(on=0)) # Add a trailing spacer. - output.append(self.writeDaySpacer(cls="location")) - - output.append(fmt.table_row(on=0)) + append(self.writeDaySpacer(cls="location")) + + append(fmt.table_row(on=0)) # Output the periods with event details. @@ -2631,16 +2657,16 @@ # applicable timespan starts before this day. if period.start < date: - output.append(fmt.table_row(on=1)) - output.append(self.writeDayScaleHeading("")) + append(fmt.table_row(on=1)) + append(self.writeDayScaleHeading("")) # Otherwise, write a heading describing the time. else: - output.append(fmt.table_row(on=1)) - output.append(self.writeDayScaleHeading(period.start.time_string())) - - output.append(self.writeDaySpacer()) + append(fmt.table_row(on=1)) + append(self.writeDayScaleHeading(period.start.time_string())) + + append(self.writeDaySpacer()) # Visit each slot corresponding to a location (or no location). @@ -2649,28 +2675,28 @@ # Output each location slot's contribution. if event is None or event not in events_written: - output.append(self.writeDaySlot(period, event, event is None and 1 or rowspans[event])) + append(self.writeDaySlot(period, event, event is None and 1 or rowspans[event])) if event is not None: events_written.add(event) # Add a trailing spacer. - output.append(self.writeDaySpacer()) - - output.append(fmt.table_row(on=0)) + append(self.writeDaySpacer()) + + append(fmt.table_row(on=0)) # Write a final time heading if the last period ends in the current day. if period is not None: if period.end == date: - output.append(fmt.table_row(on=1)) - output.append(self.writeDayScaleHeading(period.end.time_string())) + append(fmt.table_row(on=1)) + append(self.writeDayScaleHeading(period.end.time_string())) for slot in day_row: - output.append(self.writeDaySpacer()) - output.append(self.writeEmptyDaySlot()) - - output.append(fmt.table_row(on=0)) + append(self.writeDaySpacer()) + append(self.writeEmptyDaySlot()) + + append(fmt.table_row(on=0)) return "".join(output) @@ -2679,9 +2705,11 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_cell(on=1, attrs={"class" : "event-scale-heading"})) - output.append(fmt.text(heading)) - output.append(fmt.table_cell(on=0)) + append = output.append + + append(fmt.table_cell(on=1, attrs={"class" : "event-scale-heading"})) + append(fmt.text(heading)) + append(fmt.table_cell(on=0)) return "".join(output) @@ -2698,20 +2726,21 @@ fmt = page.request.formatter output = [] + append = output.append if event is not None: event_summary = event.getSummary(self.parent_name) style = self.getEventStyle(event_summary) - output.append(fmt.table_cell(on=1, attrs={ + append(fmt.table_cell(on=1, attrs={ "class" : "event-timespan-content event-timespan-busy", "style" : style, "rowspan" : str(rowspan) })) - output.append(self.writeEventSummaryBox(event)) - output.append(fmt.table_cell(on=0)) + append(self.writeEventSummaryBox(event)) + append(fmt.table_cell(on=0)) else: - output.append(self.writeEmptyDaySlot()) + append(self.writeEmptyDaySlot()) return "".join(output) @@ -2720,10 +2749,11 @@ fmt = page.request.formatter output = [] - - output.append(fmt.table_cell(on=1, + append = output.append + + append(fmt.table_cell(on=1, attrs={"class" : "event-timespan-content event-timespan-empty"})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) return "".join(output) @@ -2732,10 +2762,12 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_cell(on=1, attrs={ + append = output.append + + append(fmt.table_cell(on=1, attrs={ "class" : "event-%s-spacer" % cls, "colspan" : str(colspan)})) - output.append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=0)) return "".join(output) # Map layout methods. @@ -2745,9 +2777,11 @@ fmt = page.request.formatter output = [] - output.append(fmt.table_cell(on=1, attrs={"class" : "event-map-heading"})) - output.append(self.writeMapHeading()) - output.append(fmt.table_cell(on=0)) + append = output.append + + append(fmt.table_cell(on=1, attrs={"class" : "event-map-heading"})) + append(self.writeMapHeading()) + append(fmt.table_cell(on=0)) return "".join(output) @@ -2757,14 +2791,15 @@ fmt = request.formatter output = [] - - output.append(fmt.div(on=1, attrs={"class" : "event-aggregator-error"})) - output.append(fmt.paragraph(on=1)) - output.append(fmt.text(text)) - output.append(fmt.paragraph(on=0)) - output.append(fmt.paragraph(on=1)) - output.append(linkToPage(request, Page(request, pagename), pagename)) - output.append(fmt.paragraph(on=0)) + append = output.append + + append(fmt.div(on=1, attrs={"class" : "event-aggregator-error"})) + append(fmt.paragraph(on=1)) + append(fmt.text(text)) + append(fmt.paragraph(on=0)) + append(fmt.paragraph(on=1)) + append(linkToPage(request, Page(request, pagename), pagename)) + append(fmt.paragraph(on=0)) return "".join(output) @@ -2780,7 +2815,9 @@ # Write out a self-contained list of events. output = [] - output.append(fmt.bullet_list(on=1, attr={"class" : "event-map-location-events"})) + append = output.append + + append(fmt.bullet_list(on=1, attr={"class" : "event-map-location-events"})) for event in events: @@ -2793,22 +2830,22 @@ end and self.getFullDateLabel(end), "") - output.append(fmt.listitem(on=1)) + append(fmt.listitem(on=1)) # Link to the page using the summary. - output.append(event.linkToEvent(request, event_summary)) + append(event.linkToEvent(request, event_summary)) # Add the event period. - output.append(fmt.text(" ")) - output.append(fmt.span(on=1, css_class="event-map-period")) - output.append(fmt.text(event_period)) - output.append(fmt.span(on=0)) - - output.append(fmt.listitem(on=0)) - - output.append(fmt.bullet_list(on=0)) + append(fmt.text(" ")) + append(fmt.span(on=1, css_class="event-map-period")) + append(fmt.text(event_period)) + append(fmt.span(on=0)) + + append(fmt.listitem(on=0)) + + append(fmt.bullet_list(on=0)) return "".join(output) @@ -2827,14 +2864,15 @@ # Make a calendar. output = [] - - output.append(fmt.div(on=1, css_class="event-calendar", id=("EventAggregator-%s" % self.getIdentifier()))) + append = output.append + + append(fmt.div(on=1, css_class="event-calendar", id=("EventAggregator-%s" % self.getIdentifier()))) # Output download controls. - output.append(fmt.div(on=1, css_class="event-controls")) - output.append(self.writeDownloadControls()) - output.append(fmt.div(on=0)) + append(fmt.div(on=1, css_class="event-controls")) + append(self.writeDownloadControls()) + append(fmt.div(on=0)) # Output a table. @@ -2842,19 +2880,19 @@ # Start of table view output. - output.append(fmt.table(on=1, attrs={"tableclass" : "event-table"})) - - output.append(fmt.table_row(on=1)) - output.append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) - output.append(fmt.text(_("Event dates"))) - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) - output.append(fmt.text(_("Event location"))) - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) - output.append(fmt.text(_("Event details"))) - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_row(on=0)) + append(fmt.table(on=1, attrs={"tableclass" : "event-table"})) + + append(fmt.table_row(on=1)) + append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) + append(fmt.text(_("Event dates"))) + append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) + append(fmt.text(_("Event location"))) + append(fmt.table_cell(on=0)) + append(fmt.table_cell(on=1, attrs={"class" : "event-table-heading"})) + append(fmt.text(_("Event details"))) + append(fmt.table_cell(on=0)) + append(fmt.table_row(on=0)) # Show the events in order. @@ -2877,43 +2915,43 @@ attrs = {"class" : " ".join(css_classes)} - output.append(fmt.table_row(on=1)) + append(fmt.table_row(on=1)) # Start and end dates. - output.append(fmt.table_cell(on=1, attrs=attrs)) - output.append(fmt.span(on=1)) - output.append(fmt.text(str(event_details["start"]))) - output.append(fmt.span(on=0)) + append(fmt.table_cell(on=1, attrs=attrs)) + append(fmt.span(on=1)) + append(fmt.text(str(event_details["start"]))) + append(fmt.span(on=0)) if event_details["start"] != event_details["end"]: - output.append(fmt.text(" - ")) - output.append(fmt.span(on=1)) - output.append(fmt.text(str(event_details["end"]))) - output.append(fmt.span(on=0)) - - output.append(fmt.table_cell(on=0)) + append(fmt.text(" - ")) + append(fmt.span(on=1)) + append(fmt.text(str(event_details["end"]))) + append(fmt.span(on=0)) + + append(fmt.table_cell(on=0)) # Location. - output.append(fmt.table_cell(on=1, attrs=attrs)) + append(fmt.table_cell(on=1, attrs=attrs)) if event_details.has_key("location"): - output.append(event_page.formatText(event_details["location"], fmt)) - - output.append(fmt.table_cell(on=0)) + append(event_page.formatText(event_details["location"], fmt)) + + append(fmt.table_cell(on=0)) # Link to the page using the summary. - output.append(fmt.table_cell(on=1, attrs=attrs)) - output.append(event.linkToEvent(request, event_summary)) - output.append(fmt.table_cell(on=0)) - - output.append(fmt.table_row(on=0)) + append(fmt.table_cell(on=1, attrs=attrs)) + append(event.linkToEvent(request, event_summary)) + append(fmt.table_cell(on=0)) + + append(fmt.table_row(on=0)) # End of table view output. - output.append(fmt.table(on=0)) + append(fmt.table(on=0)) # Output a map view. @@ -2951,22 +2989,22 @@ # Report errors. if maps is None: - output.append(self.showDictError( + append(self.showDictError( _("You do not have read access to the maps page:"), maps_page)) elif not self.map_name: - output.append(self.showDictError( + append(self.showDictError( _("Please specify a valid map name corresponding to an entry on the following page:"), maps_page)) elif map_image is None: - output.append(self.showDictError( + append(self.showDictError( _("Please specify a valid entry for %s on the following page:") % self.map_name, maps_page)) elif locations is None: - output.append(self.showDictError( + append(self.showDictError( _("You do not have read access to the locations page:"), locations_page)) @@ -3025,20 +3063,20 @@ # Start of map view output. map_identifier = "map-%s" % self.getIdentifier() - output.append(fmt.div(on=1, css_class="event-map", id=map_identifier)) - - output.append(fmt.table(on=1)) - - output.append(fmt.table_row(on=1)) - output.append(self.writeMapTableHeading()) - output.append(fmt.table_row(on=0)) - - output.append(fmt.table_row(on=1)) - output.append(fmt.table_cell(on=1)) - - output.append(fmt.div(on=1, css_class="event-map-container")) - output.append(fmt.image(map_image_url)) - output.append(fmt.number_list(on=1)) + append(fmt.div(on=1, css_class="event-map", id=map_identifier)) + + append(fmt.table(on=1)) + + append(fmt.table_row(on=1)) + append(self.writeMapTableHeading()) + append(fmt.table_row(on=0)) + + append(fmt.table_row(on=1)) + append(fmt.table_cell(on=1)) + + append(fmt.div(on=1, css_class="event-map-container")) + append(fmt.image(map_image_url)) + append(fmt.number_list(on=1)) # Events with no location are unpositioned. @@ -3085,77 +3123,77 @@ # Put a marker on the map. - output.append(fmt.listitem(on=1, css_class="event-map-label")) + append(fmt.listitem(on=1, css_class="event-map-label")) # Have a positioned marker for the print mode. - output.append(fmt.div(on=1, css_class="event-map-label-only", + append(fmt.div(on=1, css_class="event-map-label-only", style="left:%dpx; top:%dpx; min-width:%dpx; min-height:%dpx") % ( marker_x, marker_y, map_x_scale, map_y_scale)) - output.append(fmt.div(on=0)) + append(fmt.div(on=0)) # Have a marker containing a pop-up when using the screen mode, # providing a normal block when using the print mode. - output.append(fmt.div(on=1, css_class="event-map-label", + append(fmt.div(on=1, css_class="event-map-label", style="left:%dpx; top:%dpx; min-width:%dpx; min-height:%dpx") % ( marker_x, marker_y, map_x_scale, map_y_scale)) - output.append(fmt.div(on=1, css_class="event-map-details")) - output.append(fmt.div(on=1, css_class="event-map-shadow")) - output.append(fmt.div(on=1, css_class="event-map-location")) - - output.append(fmt.heading(on=1, depth=2)) - output.append(fmt.text(location)) - output.append(fmt.heading(on=0, depth=2)) - - output.append(self.writeMapEventSummaries(events)) - - output.append(fmt.div(on=0)) - output.append(fmt.div(on=0)) - output.append(fmt.div(on=0)) - output.append(fmt.div(on=0)) - output.append(fmt.listitem(on=0)) - - output.append(fmt.number_list(on=0)) - output.append(fmt.div(on=0)) - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_row(on=0)) + append(fmt.div(on=1, css_class="event-map-details")) + append(fmt.div(on=1, css_class="event-map-shadow")) + append(fmt.div(on=1, css_class="event-map-location")) + + append(fmt.heading(on=1, depth=2)) + append(fmt.text(location)) + append(fmt.heading(on=0, depth=2)) + + append(self.writeMapEventSummaries(events)) + + append(fmt.div(on=0)) + append(fmt.div(on=0)) + append(fmt.div(on=0)) + append(fmt.div(on=0)) + append(fmt.listitem(on=0)) + + append(fmt.number_list(on=0)) + append(fmt.div(on=0)) + append(fmt.table_cell(on=0)) + append(fmt.table_row(on=0)) # Write unpositioned events. if unpositioned_events: unpositioned_identifier = "unpositioned-%s" % self.getIdentifier() - output.append(fmt.table_row(on=1, css_class="event-map-unpositioned", + append(fmt.table_row(on=1, css_class="event-map-unpositioned", id=unpositioned_identifier)) - output.append(fmt.table_cell(on=1)) - - output.append(fmt.heading(on=1, depth=2)) - output.append(fmt.text(_("Events not shown on the map"))) - output.append(fmt.heading(on=0, depth=2)) + append(fmt.table_cell(on=1)) + + append(fmt.heading(on=1, depth=2)) + append(fmt.text(_("Events not shown on the map"))) + append(fmt.heading(on=0, depth=2)) # Show and hide controls. - output.append(fmt.div(on=1, css_class="event-map-show-control")) - output.append(fmt.anchorlink(on=1, name=unpositioned_identifier)) - output.append(fmt.text(_("Show unpositioned events"))) - output.append(fmt.anchorlink(on=0)) - output.append(fmt.div(on=0)) - - output.append(fmt.div(on=1, css_class="event-map-hide-control")) - output.append(fmt.anchorlink(on=1, name=map_identifier)) - output.append(fmt.text(_("Hide unpositioned events"))) - output.append(fmt.anchorlink(on=0)) - output.append(fmt.div(on=0)) - - output.append(self.writeMapEventSummaries(unpositioned_events)) + append(fmt.div(on=1, css_class="event-map-show-control")) + append(fmt.anchorlink(on=1, name=unpositioned_identifier)) + append(fmt.text(_("Show unpositioned events"))) + append(fmt.anchorlink(on=0)) + append(fmt.div(on=0)) + + append(fmt.div(on=1, css_class="event-map-hide-control")) + append(fmt.anchorlink(on=1, name=map_identifier)) + append(fmt.text(_("Hide unpositioned events"))) + append(fmt.anchorlink(on=0)) + append(fmt.div(on=0)) + + append(self.writeMapEventSummaries(unpositioned_events)) # End of map view output. - output.append(fmt.table_cell(on=0)) - output.append(fmt.table_row(on=0)) - output.append(fmt.table(on=0)) - output.append(fmt.div(on=0)) + append(fmt.table_cell(on=0)) + append(fmt.table_row(on=0)) + append(fmt.table(on=0)) + append(fmt.div(on=0)) # Output a list. @@ -3163,23 +3201,23 @@ # Start of list view output. - output.append(fmt.bullet_list(on=1, attr={"class" : "event-listings"})) + append(fmt.bullet_list(on=1, attr={"class" : "event-listings"})) # Output a list. for period in self.first.until(self.last): - output.append(fmt.listitem(on=1, attr={"class" : "event-listings-period"})) - output.append(fmt.div(on=1, attr={"class" : "event-listings-heading"})) + append(fmt.listitem(on=1, attr={"class" : "event-listings-period"})) + append(fmt.div(on=1, attr={"class" : "event-listings-heading"})) # Either write a date heading or produce links for navigable # calendars. - output.append(self.writeDateHeading(period)) - - output.append(fmt.div(on=0)) - - output.append(fmt.bullet_list(on=1, attr={"class" : "event-period-listings"})) + append(self.writeDateHeading(period)) + + append(fmt.div(on=0)) + + append(fmt.bullet_list(on=1, attr={"class" : "event-period-listings"})) # Show the events in order. @@ -3191,52 +3229,52 @@ event_details = event.getDetails() event_summary = event.getSummary(self.parent_name) - output.append(fmt.listitem(on=1, attr={"class" : "event-listing"})) + append(fmt.listitem(on=1, attr={"class" : "event-listing"})) # Link to the page using the summary. - output.append(fmt.paragraph(on=1)) - output.append(event.linkToEvent(request, event_summary)) - output.append(fmt.paragraph(on=0)) + append(fmt.paragraph(on=1)) + append(event.linkToEvent(request, event_summary)) + append(fmt.paragraph(on=0)) # Start and end dates. - output.append(fmt.paragraph(on=1)) - output.append(fmt.span(on=1)) - output.append(fmt.text(str(event_details["start"]))) - output.append(fmt.span(on=0)) - output.append(fmt.text(" - ")) - output.append(fmt.span(on=1)) - output.append(fmt.text(str(event_details["end"]))) - output.append(fmt.span(on=0)) - output.append(fmt.paragraph(on=0)) + append(fmt.paragraph(on=1)) + append(fmt.span(on=1)) + append(fmt.text(str(event_details["start"]))) + append(fmt.span(on=0)) + append(fmt.text(" - ")) + append(fmt.span(on=1)) + append(fmt.text(str(event_details["end"]))) + append(fmt.span(on=0)) + append(fmt.paragraph(on=0)) # Location. if event_details.has_key("location"): - output.append(fmt.paragraph(on=1)) - output.append(event_page.formatText(event_details["location"], fmt)) - output.append(fmt.paragraph(on=1)) + append(fmt.paragraph(on=1)) + append(event_page.formatText(event_details["location"], fmt)) + append(fmt.paragraph(on=1)) # Topics. if event_details.has_key("topics") or event_details.has_key("categories"): - output.append(fmt.bullet_list(on=1, attr={"class" : "event-topics"})) + append(fmt.bullet_list(on=1, attr={"class" : "event-topics"})) for topic in event_details.get("topics") or event_details.get("categories") or []: - output.append(fmt.listitem(on=1)) - output.append(event_page.formatText(topic, fmt)) - output.append(fmt.listitem(on=0)) - - output.append(fmt.bullet_list(on=0)) - - output.append(fmt.listitem(on=0)) - - output.append(fmt.bullet_list(on=0)) + append(fmt.listitem(on=1)) + append(event_page.formatText(topic, fmt)) + append(fmt.listitem(on=0)) + + append(fmt.bullet_list(on=0)) + + append(fmt.listitem(on=0)) + + append(fmt.bullet_list(on=0)) # End of list view output. - output.append(fmt.bullet_list(on=0)) + append(fmt.bullet_list(on=0)) # Output a month calendar. This shows month-by-month data. @@ -3248,16 +3286,16 @@ # Output a month. - output.append(fmt.table(on=1, attrs={"tableclass" : "event-month"})) + append(fmt.table(on=1, attrs={"tableclass" : "event-month"})) # Either write a month heading or produce links for navigable # calendars. - output.append(self.writeMonthTableHeading(month)) + append(self.writeMonthTableHeading(month)) # Weekday headings. - output.append(self.writeWeekdayHeadings()) + append(self.writeWeekdayHeadings()) # Process the days of the month. @@ -3283,17 +3321,17 @@ # Output a week, starting with the day numbers. - output.append(self.writeDayNumbers(first_day, number_of_days, month, full_coverage)) + append(self.writeDayNumbers(first_day, number_of_days, month, full_coverage)) # Either generate empty days... if not week_slots: - output.append(self.writeEmptyWeek(first_day, number_of_days)) + append(self.writeEmptyWeek(first_day, number_of_days)) # Or generate each set of scheduled events... else: - output.append(self.writeWeekSlots(first_day, number_of_days, month, week_end, week_slots)) + append(self.writeWeekSlots(first_day, number_of_days, month, week_end, week_slots)) # Process the next week... @@ -3301,7 +3339,7 @@ # End of month. - output.append(fmt.table(on=0)) + append(fmt.table(on=0)) # Output a day view. @@ -3311,7 +3349,7 @@ for date in self.first.days_until(self.last): - output.append(fmt.table(on=1, attrs={"tableclass" : "event-calendar-day"})) + append(fmt.table(on=1, attrs={"tableclass" : "event-calendar-day"})) full_coverage, day_slots = getCoverage( getEventsInPeriod(all_shown_events, getCalendarPeriod(date, date)), "datetime") @@ -3321,36 +3359,36 @@ colspan = sum(map(len, day_slots.values())) * 2 + 2 - output.append(self.writeDayTableHeading(date, colspan)) + append(self.writeDayTableHeading(date, colspan)) # Either generate empty days... if not day_slots: - output.append(self.writeEmptyDay(date)) + append(self.writeEmptyDay(date)) # Or generate each set of scheduled events... else: - output.append(self.writeDaySlots(date, full_coverage, day_slots)) + append(self.writeDaySlots(date, full_coverage, day_slots)) # End of day. - output.append(fmt.table(on=0)) + append(fmt.table(on=0)) # Output view controls. - output.append(fmt.div(on=1, css_class="event-controls")) - output.append(self.writeViewControls()) - output.append(fmt.div(on=0)) + append(fmt.div(on=1, css_class="event-controls")) + append(self.writeViewControls()) + append(fmt.div(on=0)) # Close the calendar region. - output.append(fmt.div(on=0)) + append(fmt.div(on=0)) # Add any scripts. if isinstance(fmt, request.html_formatter.__class__): - output.append(self.update_script) + append(self.update_script) return ''.join(output) @@ -3397,12 +3435,14 @@ of the page or event collection. """ + write = request.write + # Start the collection. if mimetype == "text/calendar": - request.write("BEGIN:VCALENDAR\r\n") - request.write("PRODID:-//MoinMoin//EventAggregatorSummary\r\n") - request.write("VERSION:2.0\r\n") + write("BEGIN:VCALENDAR\r\n") + write("PRODID:-//MoinMoin//EventAggregatorSummary\r\n") + write("VERSION:2.0\r\n") elif mimetype == "application/rss+xml": @@ -3411,14 +3451,14 @@ path_info = getPathInfo(request) - request.write('\r\n') - request.write('\r\n') - request.write('%s\r\n' % path_info[1:]) - request.write('%s%s\r\n' % (request.getBaseURL(), path_info)) - request.write('Events published on %s%s\r\n' % (request.getBaseURL(), path_info)) + write('\r\n') + write('\r\n') + write('%s\r\n' % path_info[1:]) + write('%s%s\r\n' % (request.getBaseURL(), path_info)) + write('Events published on %s%s\r\n' % (request.getBaseURL(), path_info)) if latest_timestamp is not None: - request.write('%s\r\n' % latest_timestamp.as_HTTP_datetime_string()) + write('%s\r\n' % latest_timestamp.as_HTTP_datetime_string()) # Sort the events by start date, reversed. @@ -3434,11 +3474,11 @@ # End the collection. if mimetype == "text/calendar": - request.write("END:VCALENDAR\r\n") + write("END:VCALENDAR\r\n") elif mimetype == "application/rss+xml": - request.write('\r\n') - request.write('\r\n') + write('\r\n') + write('\r\n') def formatEventForOutputType(event, request, mimetype, parent=None, descriptions=None): @@ -3453,6 +3493,7 @@ for events in the output resource. """ + write = request.write event_details = event.getDetails() if mimetype == "text/calendar": @@ -3467,43 +3508,43 @@ # Output the event details. - request.write("BEGIN:VEVENT\r\n") - request.write("UID:%s\r\n" % link) - request.write("URL:%s\r\n" % link) - request.write("DTSTAMP:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["created"].as_tuple()[:6]) - request.write("LAST-MODIFIED:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["last-modified"].as_tuple()[:6]) - request.write("SEQUENCE:%d\r\n" % event_details["sequence"]) + write("BEGIN:VEVENT\r\n") + write("UID:%s\r\n" % link) + write("URL:%s\r\n" % link) + write("DTSTAMP:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["created"].as_tuple()[:6]) + write("LAST-MODIFIED:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["last-modified"].as_tuple()[:6]) + write("SEQUENCE:%d\r\n" % event_details["sequence"]) start = event_details["start"] end = event_details["end"] if isinstance(start, DateTime): - request.write("DTSTART") + write("DTSTART") write_calendar_datetime(request, start) else: - request.write("DTSTART;VALUE=DATE:%04d%02d%02d\r\n" % start.as_date().as_tuple()) + write("DTSTART;VALUE=DATE:%04d%02d%02d\r\n" % start.as_date().as_tuple()) if isinstance(end, DateTime): - request.write("DTEND") + write("DTEND") write_calendar_datetime(request, end) else: - request.write("DTEND;VALUE=DATE:%04d%02d%02d\r\n" % end.next_day().as_date().as_tuple()) - - request.write("SUMMARY:%s\r\n" % getQuotedText(event_summary)) + write("DTEND;VALUE=DATE:%04d%02d%02d\r\n" % end.next_day().as_date().as_tuple()) + + write("SUMMARY:%s\r\n" % getQuotedText(event_summary)) # Optional details. if event_details.get("topics") or event_details.get("categories"): - request.write("CATEGORIES:%s\r\n" % ",".join( + write("CATEGORIES:%s\r\n" % ",".join( [getQuotedText(topic) for topic in event_details.get("topics") or event_details.get("categories")] )) if event_details.has_key("location"): - request.write("LOCATION:%s\r\n" % getQuotedText(event_details["location"])) + write("LOCATION:%s\r\n" % getQuotedText(event_details["location"])) if event_details.has_key("geo"): - request.write("GEO:%s\r\n" % getQuotedText(";".join([str(ref.to_degrees()) for ref in event_details["geo"]]))) - - request.write("END:VEVENT\r\n") + write("GEO:%s\r\n" % getQuotedText(";".join([str(ref.to_degrees()) for ref in event_details["geo"]]))) + + write("END:VEVENT\r\n") elif mimetype == "application/rss+xml": @@ -3519,9 +3560,9 @@ event_summary = event.getSummary(parent) link = event.getEventURL() - request.write('\r\n') - request.write('%s\r\n' % wikiutil.escape(event_summary)) - request.write('%s\r\n' % link) + write('\r\n') + write('%s\r\n' % wikiutil.escape(event_summary)) + write('%s\r\n' % link) # Write a description according to the preferred source of # descriptions. @@ -3531,16 +3572,16 @@ else: description = event_details["last-comment"] - request.write('%s\r\n' % + write('%s\r\n' % fmt.text(event_page.formatText(description, fmt))) for topic in event_details.get("topics") or event_details.get("categories") or []: - request.write('%s\r\n' % + write('%s\r\n' % fmt.text(event_page.formatText(topic, fmt))) - request.write('%s\r\n' % event_details["created"].as_HTTP_datetime_string()) - request.write('%s#%s\r\n' % (link, event_details["sequence"])) - request.write('\r\n') + write('%s\r\n' % event_details["created"].as_HTTP_datetime_string()) + write('%s#%s\r\n' % (link, event_details["sequence"])) + write('\r\n') # iCalendar format helper functions.