# HG changeset patch # User Paul Boddie # Date 1432071528 -7200 # Node ID 48341bb56051c7d93792f197e5de300c8295b594 # Parent abe337f26c5a55cbdce218c41c042215a99340f8 Remove additional recurrences for entire event cancellations. Handle missing SEQUENCE and DTSTAMP details in received objects. diff -r abe337f26c5a -r 48341bb56051 imiptools/handlers/person_outgoing.py --- a/imiptools/handlers/person_outgoing.py Tue May 19 21:47:59 2015 +0200 +++ b/imiptools/handlers/person_outgoing.py Tue May 19 23:38:48 2015 +0200 @@ -138,6 +138,8 @@ given_attendees = set(uri_values(self.obj.get_values("ATTENDEE"))) cancel_entire_event = given_attendees == all_attendees + # Keep the event for the organiser. + if cancel_entire_event: self.store.cancel_event(self.user, self.uid, self.recurrenceid) @@ -152,8 +154,8 @@ # Update the stored object with sequence information. if obj: - obj["SEQUENCE"] = self.obj.get_items("SEQUENCE") - obj["DTSTAMP"] = self.obj.get_items("DTSTAMP") + obj["SEQUENCE"] = self.obj.get_items("SEQUENCE") or [] + obj["DTSTAMP"] = self.obj.get_items("DTSTAMP") or [] # Set the complete event if not an additional occurrence. For any newly- # indicated occurrence, use the received event details. @@ -169,6 +171,7 @@ if update_freebusy: freebusy = self.store.get_freebusy(self.user) self.remove_from_freebusy(freebusy) + self.remove_freebusy_for_recurrences(freebusy) if cancel_entire_event or self.user in given_attendees: self.store.set_freebusy(self.user, freebusy)