1.1 --- a/imiptools/handlers/common.py Mon Apr 18 21:07:41 2016 +0200
1.2 +++ b/imiptools/handlers/common.py Tue Apr 19 00:53:59 2016 +0200
1.3 @@ -143,4 +143,35 @@
1.4
1.5 self.add_result("REFRESH", [get_address(organiser)], obj.to_part("REFRESH"))
1.6
1.7 + def ensure_occurrence(self):
1.8 +
1.9 + """
1.10 + Ensure that the object originating from an attendee corresponds to an
1.11 + existing occurrence of an event, creating or reviving a specific
1.12 + recurrence if necessary.
1.13 +
1.14 + Return whether a valid occurrence was found.
1.15 + """
1.16 +
1.17 + # Obtain any stored object.
1.18 +
1.19 + obj = self.get_stored_object_version()
1.20 +
1.21 + # Handle any newly-defined occurrence.
1.22 +
1.23 + if not obj:
1.24 +
1.25 + # Check for a valid occurrence.
1.26 +
1.27 + if not self.is_recurrence():
1.28 + return False
1.29 +
1.30 + # Set the complete event if not an additional occurrence. For any newly-
1.31 + # indicated occurrence, use the received event details.
1.32 +
1.33 + self.store.remove_cancellation(self.user, self.uid, self.recurrenceid)
1.34 + self.store.set_event(self.user, self.uid, self.recurrenceid, self.obj.to_node())
1.35 +
1.36 + return True
1.37 +
1.38 # vim: tabstop=4 expandtab shiftwidth=4