1.1 --- a/actions/EventAggregatorSummary.py Sat Jul 23 15:59:27 2011 +0200
1.2 +++ b/actions/EventAggregatorSummary.py Sat Jul 23 19:00:04 2011 +0200
1.3 @@ -42,6 +42,16 @@
1.4 category_list.append('<option value="%s" %s>%s</option>' % (
1.5 escattr(category_pagename), selected, escape(category_name)))
1.6
1.7 + sources_list = []
1.8 + sources = form.get("source", [])
1.9 +
1.10 + for source_name in getAllEventSources(request).keys():
1.11 +
1.12 + selected = self._get_selected_for_list(source_name, sources)
1.13 +
1.14 + sources_list.append('<option value="%s" %s>%s</option>' % (
1.15 + escattr(source_name), selected, escape(source_name)))
1.16 +
1.17 # Initialise month lists and defaults.
1.18
1.19 start_month_list, end_month_list = self.get_month_lists()
1.20 @@ -90,6 +100,8 @@
1.21 "buttons_html" : buttons_html,
1.22 "category_label" : escape(_("Categories")),
1.23 "category_list" : "\n".join(category_list),
1.24 + "sources_label" : escape(_("Sources")),
1.25 + "sources_list" : "\n".join(sources_list),
1.26 "start_month_list" : "\n".join(start_month_list),
1.27 "start_label" : escape(_("Start day (optional), month and year")),
1.28 "start_day_default" : escattr(start_day_default),
1.29 @@ -127,6 +139,14 @@
1.30 </td>
1.31 </tr>
1.32 <tr>
1.33 + <td class="label"><label>%(sources_label)s</label></td>
1.34 + <td class="content">
1.35 + <select multiple="multiple" name="source">
1.36 + %(sources_list)s
1.37 + </select>
1.38 + </td>
1.39 + </tr>
1.40 + <tr>
1.41 <td class="label"><label>%(start_label)s</label></td>
1.42 <td>
1.43 <input name="start-day" type="text" value="%(start_day_default)s" size="2" />
1.44 @@ -200,13 +220,14 @@
1.45 _ = self._
1.46 form = self.get_form()
1.47
1.48 - # If no category names exist in the request, an error message is
1.49 - # returned.
1.50 + # If no category names or sources exist in the request, an error message
1.51 + # is returned.
1.52
1.53 category_names = form.get("category", [])
1.54 + sources = form.get("source", [])
1.55
1.56 - if not category_names:
1.57 - return 0, _("No categories specified.")
1.58 + if not (category_names or sources):
1.59 + return 0, _("No categories or sources specified.")
1.60
1.61 write_resource(self.request)
1.62 return 1, None
1.63 @@ -239,6 +260,7 @@
1.64 form = get_form(request)
1.65
1.66 category_names = form.get("category", [])
1.67 + remote_sources = form.get("source", [])
1.68 format = form.get("format", ["iCalendar"])[0]
1.69 descriptions = form.get("descriptions", ["page"])[0]
1.70 parent = form.get("parent", [""])[0]
1.71 @@ -268,10 +290,11 @@
1.72
1.73 # Determine the period and get the events involved.
1.74
1.75 - event_pages = getPagesFromResults(getAllCategoryPages(category_names, request), request)
1.76 - events = getEventsFromPages(event_pages)
1.77 - all_shown_events = getEventsInPeriod(events, getCalendarPeriod(calendar_start, calendar_end))
1.78 - latest_timestamp = setEventTimestamps(request, all_shown_events)
1.79 + pages = getPagesFromResults(getAllCategoryPages(category_names, request), request)
1.80 + events = getEventsFromResources(getEventPages(pages))
1.81 + events += getEventsFromResources(getEventResources(remote_sources, calendar_start, calendar_end, request))
1.82 + all_shown_events = getEventsInPeriod(events, getCalendarPeriod(calendar_start, calendar_end))
1.83 + latest_timestamp = setEventTimestamps(request, all_shown_events)
1.84
1.85 # Output summary data...
1.86
1.87 @@ -292,7 +315,7 @@
1.88 # Define the last modified time.
1.89
1.90 if latest_timestamp is not None:
1.91 - headers.append("Last-Modified: %s" % getHTTPTimeString(latest_timestamp))
1.92 + headers.append("Last-Modified: %s" % latest_timestamp.as_HTTP_datetime_string())
1.93
1.94 send_headers(headers)
1.95
1.96 @@ -304,7 +327,6 @@
1.97 request.write("VERSION:2.0\r\n")
1.98
1.99 for event in all_shown_events:
1.100 - event_page = event.getPage()
1.101 event_details = event.getDetails()
1.102
1.103 # NOTE: A custom formatter making attributes for links and plain
1.104 @@ -313,15 +335,15 @@
1.105 # Get the summary details.
1.106
1.107 event_summary = event.getSummary(parent)
1.108 - link = event_page.getPageURL(request)
1.109 + link = event.getEventURL(request)
1.110
1.111 # Output the event details.
1.112
1.113 request.write("BEGIN:VEVENT\r\n")
1.114 request.write("UID:%s\r\n" % link)
1.115 request.write("URL:%s\r\n" % link)
1.116 - request.write("DTSTAMP:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["created"][:6])
1.117 - request.write("LAST-MODIFIED:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["last-modified"][:6])
1.118 + request.write("DTSTAMP:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["created"].as_tuple()[:6])
1.119 + request.write("LAST-MODIFIED:%04d%02d%02dT%02d%02d%02dZ\r\n" % event_details["last-modified"].as_tuple()[:6])
1.120 request.write("SEQUENCE:%d\r\n" % event_details["sequence"])
1.121
1.122 start = event_details["start"]
1.123 @@ -374,7 +396,7 @@
1.124 request.write('<description>Events published on %s%s</description>\r\n' % (request.getBaseURL(), path_info))
1.125
1.126 if latest_timestamp is not None:
1.127 - request.write('<lastBuildDate>%s</lastBuildDate>\r\n' % getHTTPTimeString(latest_timestamp))
1.128 + request.write('<lastBuildDate>%s</lastBuildDate>\r\n' % latest_timestamp.as_HTTP_datetime_string())
1.129
1.130 # Sort all_shown_events by start date, reversed.
1.131
1.132 @@ -387,13 +409,12 @@
1.133
1.134 # Get a parser and formatter for the formatting of some attributes.
1.135
1.136 - parser_cls = getParserClass(request, event_page.getFormat())
1.137 - fmt = getFormatter(request, "text/html", event_page.page)
1.138 + fmt = request.html_formatter
1.139
1.140 # Get the summary details.
1.141
1.142 event_summary = event.getSummary(parent)
1.143 - link = event_page.getPageURL(request)
1.144 + link = event.getEventURL(request)
1.145
1.146 request.write('<item>\r\n')
1.147 request.write('<title>%s</title>\r\n' % wikiutil.escape(event_summary))
1.148 @@ -408,13 +429,13 @@
1.149 description = event_details["last-comment"]
1.150
1.151 request.write('<description>%s</description>\r\n' %
1.152 - fmt.text(formatText(description, request, fmt, parser_cls)))
1.153 + fmt.text(event_page.formatText(description, request, fmt)))
1.154
1.155 for topic in event_details.get("topics") or event_details.get("categories") or []:
1.156 request.write('<category>%s</category>\r\n' %
1.157 - fmt.text(formatText(topic, request, fmt, parser_cls)))
1.158 + fmt.text(event_page.formatText(topic, request, fmt)))
1.159
1.160 - request.write('<pubDate>%s</pubDate>\r\n' % getHTTPTimeString(event_details["created"]))
1.161 + request.write('<pubDate>%s</pubDate>\r\n' % event_details["created"].as_HTTP_datetime_string())
1.162 request.write('<guid>%s#%s</guid>\r\n' % (link, event_details["sequence"]))
1.163 request.write('</item>\r\n')
1.164