# HG changeset patch # User Paul Boddie # Date 1423152896 -3600 # Node ID e0bf8737bc4b4344a43c594378046baf493fc7cf # Parent 6ce516322f0ff3aadbe7772a9e69bf6ec034d9d9 Remove free/busy information for an event upon cancellation. diff -r 6ce516322f0f -r e0bf8737bc4b imiptools/handlers/person.py --- a/imiptools/handlers/person.py Thu Feb 05 15:52:55 2015 +0100 +++ b/imiptools/handlers/person.py Thu Feb 05 17:14:56 2015 +0100 @@ -66,6 +66,15 @@ elif cancel: self.store.cancel_event(attendee, self.uid) + # No return message will occur to update the free/busy + # information, so this is done here. + + freebusy = self.store.get_freebusy(attendee) + self.remove_from_freebusy(freebusy, attendee) + + if self.publisher: + self.publisher.set_freebusy(attendee, freebusy) + # As organiser, update attendance. else: diff -r 6ce516322f0f -r e0bf8737bc4b imiptools/handlers/person_outgoing.py --- a/imiptools/handlers/person_outgoing.py Thu Feb 05 15:52:55 2015 +0100 +++ b/imiptools/handlers/person_outgoing.py Thu Feb 05 17:14:56 2015 +0100 @@ -81,7 +81,7 @@ return True - def _remove(self, from_organiser=True): + def _remove(self, from_organiser=True, update_freebusy=False): "Remove free/busy information for any unprocessed object." @@ -91,8 +91,22 @@ identity, attr = item - freebusy = self.store.get_freebusy(identity) - self.remove_from_freebusy(freebusy, identity) + # Store the object, updating any sequence information. + + self.store.set_event(identity, self.uid, self.obj.to_node()) + + # Remove any associated request. + + self.store.dequeue_request(identity, self.uid) + + # Update free/busy information. + + if update_freebusy: + freebusy = self.store.get_freebusy(identity) + self.remove_from_freebusy(freebusy, identity) + + if self.publisher: + self.publisher.set_freebusy(identity, freebusy) return True @@ -104,7 +118,7 @@ pass def cancel(self): - self._remove(True) + self._remove(True, True) def counter(self): pass