1.1 --- a/imiptools/content.py Tue Dec 09 00:27:14 2014 +0100
1.2 +++ b/imiptools/content.py Tue Dec 09 22:29:46 2014 +0100
1.3 @@ -192,6 +192,16 @@
1.4
1.5 return periods
1.6
1.7 +def remove_from_freebusy(freebusy, attendee, uid, store):
1.8 +
1.9 + """
1.10 + For the given 'attendee', remove periods from 'freebusy' that are associated
1.11 + with 'uid' in the 'store'.
1.12 + """
1.13 +
1.14 + remove_period(freebusy, uid)
1.15 + store.set_freebusy(attendee, freebusy)
1.16 +
1.17 def update_freebusy(freebusy, attendee, periods, transp, uid, store):
1.18
1.19 """
1.20 @@ -367,6 +377,9 @@
1.21 def get_periods(self):
1.22 return get_periods(self.details)
1.23
1.24 + def remove_from_freebusy(self, freebusy, attendee):
1.25 + remove_from_freebusy(freebusy, attendee, self.uid, self.store)
1.26 +
1.27 def update_freebusy(self, freebusy, attendee, periods):
1.28 return update_freebusy(freebusy, attendee, periods, self.get_value("TRANSP"), self.uid, self.store)
1.29
2.1 --- a/imiptools/handlers/person_outgoing.py Tue Dec 09 00:27:14 2014 +0100
2.2 +++ b/imiptools/handlers/person_outgoing.py Tue Dec 09 22:29:46 2014 +0100
2.3 @@ -13,7 +13,7 @@
2.4 "Handling mechanisms specific to people."
2.5
2.6 def _record(self, objtype, from_organiser=True, update_freebusy=False):
2.7 - identity = self.get_value(from_organiser and "ORGANIZER" or "ATTENDEE")
2.8 + identity, attr = self.get_item(from_organiser and "ORGANIZER" or "ATTENDEE")
2.9
2.10 # Check for event using UID.
2.11
2.12 @@ -36,7 +36,10 @@
2.13 periods = self.get_periods()
2.14 freebusy = self.store.get_freebusy(identity) or []
2.15
2.16 - self.update_freebusy(freebusy, identity, periods)
2.17 + if from_organiser or attr.get("PARTSTAT") == "ACCEPTED":
2.18 + self.update_freebusy(freebusy, identity, periods)
2.19 + else:
2.20 + self.remove_from_freebusy(freebusy, identity)
2.21
2.22 if self.publisher:
2.23 self.publisher.set_freebusy(identity, freebusy)
3.1 --- a/imiptools/handlers/resource.py Tue Dec 09 00:27:14 2014 +0100
3.2 +++ b/imiptools/handlers/resource.py Tue Dec 09 22:29:46 2014 +0100
3.3 @@ -96,8 +96,11 @@
3.4
3.5 if scheduled:
3.6 self.update_freebusy(freebusy, attendee, periods)
3.7 - if self.publisher:
3.8 - self.publisher.set_freebusy(attendee, freebusy)
3.9 + else:
3.10 + self.remove_from_freebusy(freebusy, attendee)
3.11 +
3.12 + if self.publisher:
3.13 + self.publisher.set_freebusy(attendee, freebusy)
3.14
3.15 return "REPLY", to_part("REPLY", calendar)
3.16