1.1 --- a/EventAggregatorSupport/Resources.py Wed May 01 01:44:54 2013 +0200
1.2 +++ b/EventAggregatorSupport/Resources.py Wed May 01 15:50:34 2013 +0200
1.3 @@ -124,11 +124,18 @@
1.4 if content_type != required_content_type:
1.5 continue
1.6
1.7 + metadata = {}
1.8 + line = f.readline()
1.9 + while line.strip():
1.10 + key, value = [v.strip() for v in line.split(":", 1)]
1.11 + metadata[key] = value
1.12 + line = f.readline()
1.13 +
1.14 # Send the data to the parser.
1.15
1.16 uf = codecs.getreader(encoding or "utf-8")(f)
1.17 try:
1.18 - resources.append(resource_cls(url, parser(uf)))
1.19 + resources.append(resource_cls(url, parser(uf), metadata))
1.20 finally:
1.21 uf.close()
1.22 finally:
2.1 --- a/EventAggregatorSupport/Types.py Wed May 01 01:44:54 2013 +0200
2.2 +++ b/EventAggregatorSupport/Types.py Wed May 01 15:50:34 2013 +0200
2.3 @@ -8,10 +8,12 @@
2.4 @license: GNU GPL (v2 or later), see COPYING.txt for details.
2.5 """
2.6
2.7 +from DateSupport import DateTime
2.8 from GeneralSupport import to_list
2.9 from LocationSupport import getMapReference
2.10 from MoinSupport import *
2.11
2.12 +from email.utils import parsedate
2.13 import re
2.14
2.15 try:
2.16 @@ -185,11 +187,28 @@
2.17
2.18 "An iCalendar resource."
2.19
2.20 - def __init__(self, url, calendar):
2.21 + def __init__(self, url, calendar, metadata):
2.22 EventResource.__init__(self, url)
2.23 self.calendar = calendar
2.24 + self.metadata = metadata
2.25 self.events = None
2.26
2.27 + if not self.metadata.has_key("created") and self.metadata.has_key("date"):
2.28 + self.metadata["created"] = DateTime(parsedate(self.metadata["date"])[:7])
2.29 +
2.30 + if self.metadata.has_key("last-modified") and not isinstance(self.metadata["last-modified"], DateTime):
2.31 + self.metadata["last-modified"] = DateTime(parsedate(self.metadata["last-modified"])[:7])
2.32 +
2.33 + def getMetadata(self):
2.34 +
2.35 + """
2.36 + Return a dictionary containing items describing the page's "created"
2.37 + time, "last-modified" time, "sequence" (or revision number) and the
2.38 + "last-comment" made about the last edit.
2.39 + """
2.40 +
2.41 + return self.metadata
2.42 +
2.43 def getEvents(self):
2.44
2.45 "Return a list of events from this resource."
2.46 @@ -710,9 +729,11 @@
2.47 "last-comment" made about the last edit.
2.48 """
2.49
2.50 + metadata = self.page.getMetadata()
2.51 +
2.52 return {
2.53 - "created" : self.details.get("created") or self.details["dtstamp"],
2.54 - "last-modified" : self.details.get("last-modified") or self.details["dtstamp"],
2.55 + "created" : self.details.get("created") or self.details.get("dtstamp") or metadata["created"],
2.56 + "last-modified" : self.details.get("last-modified") or self.details.get("dtstamp") or metadata["last-modified"],
2.57 "sequence" : self.details.get("sequence") or 0,
2.58 "last-comment" : ""
2.59 }