1.1 --- a/EventAggregatorSupport.py Sun Jul 24 00:32:20 2011 +0200
1.2 +++ b/EventAggregatorSupport.py Sun Jul 24 00:47:10 2011 +0200
1.3 @@ -511,9 +511,9 @@
1.4 def __init__(self, url):
1.5 self.url = url
1.6
1.7 - def getPageURL(self, request):
1.8 -
1.9 - "Using 'request', return the URL of this page."
1.10 + def getPageURL(self):
1.11 +
1.12 + "Return the URL of this page."
1.13
1.14 return self.url
1.15
1.16 @@ -642,10 +642,11 @@
1.17
1.18 self.body = page.getBody()
1.19
1.20 - def getPageURL(self, request):
1.21 -
1.22 - "Using 'request', return the URL of this page."
1.23 -
1.24 + def getPageURL(self):
1.25 +
1.26 + "Return the URL of this page."
1.27 +
1.28 + request = self.page.request
1.29 return request.getQualifiedURL(self.page.url(request, relative=0))
1.30
1.31 def getFormat(self):
1.32 @@ -965,7 +966,14 @@
1.33 return "<Event %r %r>" % (self.getSummary(), self.as_limits())
1.34
1.35 def __hash__(self):
1.36 - return hash(self.getSummary())
1.37 +
1.38 + """
1.39 + Return a dictionary hash, avoiding mistaken equality of events in some
1.40 + situations (notably membership tests) by including the URL as well as
1.41 + the summary.
1.42 + """
1.43 +
1.44 + return hash(self.getSummary() + self.getEventURL())
1.45
1.46 def getPage(self):
1.47
1.48 @@ -979,11 +987,11 @@
1.49
1.50 self.page = page
1.51
1.52 - def getEventURL(self, request):
1.53 -
1.54 - "Using 'request', return the URL of this event."
1.55 -
1.56 - return self.page.getPageURL(request)
1.57 + def getEventURL(self):
1.58 +
1.59 + "Return the URL of this event."
1.60 +
1.61 + return self.page.getPageURL()
1.62
1.63 def linkToEvent(self, request, text, query_string=None):
1.64
1.65 @@ -1052,6 +1060,12 @@
1.66 return self == other
1.67
1.68 def __cmp__(self, other):
1.69 +
1.70 + "Compare this event to an 'other' event purely by their timespans."
1.71 +
1.72 + # NOTE: This could be replaced by rich comparison methods and provide
1.73 + # NOTE: more effective equality testing.
1.74 +
1.75 if isinstance(other, Event):
1.76 return cmp(self.as_timespan(), other.as_timespan())
1.77 else:
1.78 @@ -1072,11 +1086,11 @@
1.79
1.80 "An event from a remote calendar."
1.81
1.82 - def getEventURL(self, request):
1.83 -
1.84 - "Using 'request', return the URL of this event."
1.85 -
1.86 - return self.details.get("url") or self.page.getPageURL(request)
1.87 + def getEventURL(self):
1.88 +
1.89 + "Return the URL of this event."
1.90 +
1.91 + return self.details.get("url") or self.page.getPageURL()
1.92
1.93 def linkToEvent(self, request, text, query_string=None):
1.94
1.95 @@ -1085,7 +1099,7 @@
1.96 and optional 'query_string'.
1.97 """
1.98
1.99 - return linkToResource(self.getEventURL(request), request, text, query_string)
1.100 + return linkToResource(self.getEventURL(), request, text, query_string)
1.101
1.102 def getMetadata(self):
1.103
2.1 --- a/actions/EventAggregatorSummary.py Sun Jul 24 00:32:20 2011 +0200
2.2 +++ b/actions/EventAggregatorSummary.py Sun Jul 24 00:47:10 2011 +0200
2.3 @@ -335,7 +335,7 @@
2.4 # Get the summary details.
2.5
2.6 event_summary = event.getSummary(parent)
2.7 - link = event.getEventURL(request)
2.8 + link = event.getEventURL()
2.9
2.10 # Output the event details.
2.11
2.12 @@ -414,7 +414,7 @@
2.13 # Get the summary details.
2.14
2.15 event_summary = event.getSummary(parent)
2.16 - link = event.getEventURL(request)
2.17 + link = event.getEventURL()
2.18
2.19 request.write('<item>\r\n')
2.20 request.write('<title>%s</title>\r\n' % wikiutil.escape(event_summary))