1.1 --- a/imip_manager.py Tue Feb 10 17:26:23 2015 +0100
1.2 +++ b/imip_manager.py Tue Feb 10 17:30:13 2015 +0100
1.3 @@ -248,17 +248,37 @@
1.4 if self.messenger and self.messenger.sender != get_address(organiser):
1.5 organiser_attr["SENT-BY"] = get_uri(self.messenger.sender)
1.6
1.7 + to_cancel = []
1.8 +
1.9 if removed:
1.10 - attendee_map = uri_dict(self.obj.get_value_map("ATTENDEE"))
1.11 - self.obj["ATTENDEE"] = [(attendee, attendee_attr)
1.12 - for (attendee, attendee_attr) in attendee_map.items()
1.13 - if attendee not in removed]
1.14 + attendees = uri_items(self.obj.get_items("ATTENDEE"))
1.15 + remaining = []
1.16 +
1.17 + for attendee, attendee_attr in attendees:
1.18 + if attendee in removed:
1.19 + to_cancel.append((attendee, attendee_attr))
1.20 + else:
1.21 + remaining.append((attendee, attendee_attr))
1.22 +
1.23 + self.obj["ATTENDEE"] = remaining
1.24
1.25 self.update_dtstamp()
1.26 self.set_sequence(update)
1.27
1.28 self.send_message(method, get_address(organiser), for_organiser=True)
1.29
1.30 + # When cancelling, replace the attendees with those for whom the event
1.31 + # is now cancelled.
1.32 +
1.33 + if to_cancel:
1.34 + self.obj["ATTENDEE"] = to_cancel
1.35 + self.send_message("CANCEL", get_address(organiser), for_organiser=True)
1.36 +
1.37 + # Just in case more work is done with this event, the attendees are
1.38 + # now restored.
1.39 +
1.40 + self.obj["ATTENDEE"] = remaining
1.41 +
1.42 return True
1.43
1.44 class Manager(Common):