1.1 --- a/imipweb/resource.py Sat Sep 19 01:07:40 2015 +0200
1.2 +++ b/imipweb/resource.py Sat Sep 19 01:08:17 2015 +0200
1.3 @@ -83,11 +83,19 @@
1.4 self.new_page(title="Redirect")
1.5 self.page.p("Redirecting to: %s" % url)
1.6
1.7 - def link_to(self, uid, recurrenceid=None):
1.8 + def link_to(self, uid, recurrenceid=None, section=None):
1.9 +
1.10 + """
1.11 + Return a link to an object with the given 'uid', 'recurrenceid' and
1.12 + 'section'. See get_identifiers for the decoding of such links.
1.13 + """
1.14 +
1.15 + path = [uid]
1.16 if recurrenceid:
1.17 - return self.env.new_url("/".join([uid, recurrenceid]))
1.18 - else:
1.19 - return self.env.new_url(uid)
1.20 + path.append(recurrenceid)
1.21 + if section:
1.22 + path.append(section)
1.23 + return self.env.new_url("/".join(path))
1.24
1.25 # Control naming helpers.
1.26
1.27 @@ -102,18 +110,38 @@
1.28
1.29 # Access to objects.
1.30
1.31 - def _get_identifiers(self, path_info):
1.32 + def get_identifiers(self, path_info):
1.33 +
1.34 + """
1.35 + Return identifiers provided by 'path_info', potentially encoded by
1.36 + 'link_to'.
1.37 + """
1.38 +
1.39 parts = path_info.lstrip("/").split("/")
1.40 +
1.41 + # UID only.
1.42 +
1.43 if len(parts) == 1:
1.44 - return parts[0], None
1.45 + return parts[0], None, None
1.46 +
1.47 + # UID and RECURRENCE-ID or UID and section.
1.48 +
1.49 + elif len(parts) == 2:
1.50 + if parts[1] == "counter":
1.51 + return parts[0], None, "counters"
1.52 + else:
1.53 + return parts[0], parts[1], parts[2] == "counter" and "counters" or None
1.54 +
1.55 + # UID, RECURRENCE-ID and section.
1.56 +
1.57 else:
1.58 - return parts[:2]
1.59 + return parts[:3]
1.60
1.61 - def _get_object(self, uid, recurrenceid=None):
1.62 - if self.objects.has_key((uid, recurrenceid)):
1.63 - return self.objects[(uid, recurrenceid)]
1.64 + def _get_object(self, uid, recurrenceid=None, section=None):
1.65 + if self.objects.has_key((uid, recurrenceid, section)):
1.66 + return self.objects[(uid, recurrenceid, section)]
1.67
1.68 - obj = self.objects[(uid, recurrenceid)] = self.get_stored_object(uid, recurrenceid)
1.69 + obj = self.objects[(uid, recurrenceid, section)] = self.get_stored_object(uid, recurrenceid, section)
1.70 return obj
1.71
1.72 def _get_recurrences(self, uid):
1.73 @@ -127,9 +155,8 @@
1.74 self.requests = self.store.get_requests(self.user)
1.75 return self.requests
1.76
1.77 - def _have_request(self, uid, recurrenceid=None):
1.78 - requests = self._get_requests()
1.79 - return self.store.have_request(requests, uid, recurrenceid)
1.80 + def _have_request(self, uid, recurrenceid=None, type=None, strict=False):
1.81 + return self.store.have_request(self._get_requests(), uid, recurrenceid, type, strict)
1.82
1.83 def _get_request_summary(self):
1.84