1.1 --- a/imiptools/handlers/person_outgoing.py Fri May 15 20:17:26 2015 +0200
1.2 +++ b/imiptools/handlers/person_outgoing.py Fri May 15 22:09:02 2015 +0200
1.3 @@ -122,15 +122,18 @@
1.4 if not self.have_new_object():
1.5 return False
1.6
1.7 - # Only cancel the event completely if all attendees are given.
1.8 - # NOTE: Need to also check for recurrence identifiers and selective
1.9 - # NOTE: cancellations.
1.10 + # Obtain any stored object, using parent object details if a newly-
1.11 + # indicated occurrence is referenced.
1.12
1.13 obj = self.get_object()
1.14 - if not obj:
1.15 + old = not obj and self.get_parent_object() or obj
1.16 +
1.17 + if not old:
1.18 return False
1.19
1.20 - attendees = uri_dict(obj.get_value_map("ATTENDEE"))
1.21 + # Only cancel the event completely if all attendees are given.
1.22 +
1.23 + attendees = uri_dict(old.get_value_map("ATTENDEE"))
1.24 all_attendees = set(attendees.keys())
1.25 given_attendees = set(uri_values(self.obj.get_values("ATTENDEE")))
1.26 cancel_entire_event = given_attendees == all_attendees
1.27 @@ -140,7 +143,7 @@
1.28
1.29 # Otherwise, remove the given attendees and update the event.
1.30
1.31 - else:
1.32 + elif obj:
1.33 for attendee in given_attendees:
1.34 if attendees.has_key(attendee):
1.35 del attendees[attendee]
1.36 @@ -148,12 +151,14 @@
1.37
1.38 # Update the stored object with sequence information.
1.39
1.40 - obj["SEQUENCE"] = self.obj.get_items("SEQUENCE")
1.41 - obj["DTSTAMP"] = self.obj.get_items("DTSTAMP")
1.42 + if obj:
1.43 + obj["SEQUENCE"] = self.obj.get_items("SEQUENCE")
1.44 + obj["DTSTAMP"] = self.obj.get_items("DTSTAMP")
1.45
1.46 - # Set the complete event if not an additional occurrence.
1.47 + # Set the complete event if not an additional occurrence. For any newly-
1.48 + # indicated occurrence, use the received event details.
1.49
1.50 - self.store.set_event(self.user, self.uid, self.recurrenceid, obj.to_node())
1.51 + self.store.set_event(self.user, self.uid, self.recurrenceid, (obj or self.obj).to_node())
1.52
1.53 # Remove any associated request.
1.54