1.1 --- a/imiptools/handlers/common.py Sun Sep 06 23:20:02 2015 +0200
1.2 +++ b/imiptools/handlers/common.py Mon Sep 07 18:54:54 2015 +0200
1.3 @@ -77,26 +77,29 @@
1.4 organiser of an event if 'for_organiser' is set to a true value.
1.5 """
1.6
1.7 - freebusy = self.store.get_freebusy(self.user)
1.8 + freebusy = self.store.get_freebusy_for_update(self.user)
1.9 + try:
1.10 + # Obtain the attendance attributes for this user, if available.
1.11
1.12 - # Obtain the attendance attributes for this user, if available.
1.13 + self.update_freebusy_for_participant(freebusy, self.user, for_organiser)
1.14
1.15 - self.update_freebusy_for_participant(freebusy, self.user, for_organiser)
1.16 + # Remove original recurrence details replaced by additional
1.17 + # recurrences, as well as obsolete additional recurrences.
1.18
1.19 - # Remove original recurrence details replaced by additional
1.20 - # recurrences, as well as obsolete additional recurrences.
1.21 + self.remove_freebusy_for_recurrences(freebusy, self.store.get_recurrences(self.user, self.uid))
1.22 + self.store.set_freebusy_in_update(self.user, freebusy)
1.23
1.24 - self.remove_freebusy_for_recurrences(freebusy, self.store.get_recurrences(self.user, self.uid))
1.25 - self.store.set_freebusy(self.user, freebusy)
1.26 + if self.publisher and self.is_sharing():
1.27 + self.publisher.set_freebusy(self.user, freebusy)
1.28
1.29 - if self.publisher and self.is_sharing():
1.30 - self.publisher.set_freebusy(self.user, freebusy)
1.31 + # Update free/busy provider information if the event may recur
1.32 + # indefinitely.
1.33
1.34 - # Update free/busy provider information if the event may recur
1.35 - # indefinitely.
1.36 + if self.possibly_recurring_indefinitely():
1.37 + self.store.append_freebusy_provider(self.user, self.obj)
1.38
1.39 - if self.possibly_recurring_indefinitely():
1.40 - self.store.append_freebusy_provider(self.user, self.obj)
1.41 + finally:
1.42 + self.store.release_freebusy(self.user)
1.43
1.44 return True
1.45
1.46 @@ -104,18 +107,22 @@
1.47
1.48 "Remove free/busy information when handling an object."
1.49
1.50 - freebusy = self.store.get_freebusy(self.user)
1.51 - self.remove_from_freebusy(freebusy)
1.52 - self.remove_freebusy_for_recurrences(freebusy)
1.53 - self.store.set_freebusy(self.user, freebusy)
1.54 + freebusy = self.store.get_freebusy_for_update(self.user)
1.55 + try:
1.56 + self.remove_from_freebusy(freebusy)
1.57 + self.remove_freebusy_for_recurrences(freebusy)
1.58 + self.store.set_freebusy_in_update(self.user, freebusy)
1.59 +
1.60 + if self.publisher and self.is_sharing():
1.61 + self.publisher.set_freebusy(self.user, freebusy)
1.62
1.63 - if self.publisher and self.is_sharing():
1.64 - self.publisher.set_freebusy(self.user, freebusy)
1.65 + # Update free/busy provider information if the event may recur
1.66 + # indefinitely.
1.67
1.68 - # Update free/busy provider information if the event may recur
1.69 - # indefinitely.
1.70 + if self.possibly_recurring_indefinitely():
1.71 + self.store.remove_freebusy_provider(self.user, self.obj)
1.72
1.73 - if self.possibly_recurring_indefinitely():
1.74 - self.store.remove_freebusy_provider(self.user, self.obj)
1.75 + finally:
1.76 + self.store.release_freebusy(self.user)
1.77
1.78 # vim: tabstop=4 expandtab shiftwidth=4