1.1 --- a/imiptools/handlers/person.py Fri Sep 11 17:30:32 2015 +0200
1.2 +++ b/imiptools/handlers/person.py Fri Sep 11 17:31:56 2015 +0200
1.3 @@ -24,9 +24,9 @@
1.4 from imiptools.handlers.common import CommonFreebusy, CommonEvent
1.5 from imiptools.period import FreeBusyPeriod, Period, replace_overlapping
1.6
1.7 -class PersonHandler(Handler, CommonEvent):
1.8 +class PersonHandler(CommonEvent, Handler):
1.9
1.10 - "Handling mechanisms specific to people."
1.11 + "Event handling mechanisms specific to people."
1.12
1.13 def _add(self, queue=True):
1.14
1.15 @@ -137,43 +137,6 @@
1.16
1.17 return True
1.18
1.19 - def _record_freebusy(self, from_organiser=True):
1.20 -
1.21 - """
1.22 - Record free/busy information for a message originating from an organiser
1.23 - if 'from_organiser' is set to a true value.
1.24 - """
1.25 -
1.26 - if from_organiser:
1.27 - organiser_item = self.require_organiser(from_organiser)
1.28 - if not organiser_item:
1.29 - return
1.30 -
1.31 - senders = [organiser_item]
1.32 - else:
1.33 - oa = self.require_organiser_and_attendees(from_organiser)
1.34 - if not oa:
1.35 - return
1.36 -
1.37 - organiser_item, attendees = oa
1.38 - senders = attendees.items()
1.39 -
1.40 - if not senders:
1.41 - return
1.42 -
1.43 - freebusy = [FreeBusyPeriod(p.get_start_point(), p.get_end_point()) for p in self.obj.get_period_values("FREEBUSY")]
1.44 - dtstart = self.obj.get_datetime("DTSTART")
1.45 - dtend = self.obj.get_datetime("DTEND")
1.46 - period = Period(dtstart, dtend, self.get_tzid())
1.47 -
1.48 - for sender, sender_attr in senders:
1.49 - stored_freebusy = self.store.get_freebusy_for_other_for_update(self.user, sender)
1.50 - try:
1.51 - replace_overlapping(stored_freebusy, period, freebusy)
1.52 - self.store.set_freebusy_for_other_in_update(self.user, stored_freebusy, sender)
1.53 - finally:
1.54 - self.store.release_freebusy(self.user)
1.55 -
1.56 def _refresh(self):
1.57
1.58 """
1.59 @@ -294,7 +257,48 @@
1.60 if self._record(from_organiser=True, queue=True):
1.61 return self.wrap("An event invitation has been received.")
1.62
1.63 -class Freebusy(PersonHandler, CommonFreebusy):
1.64 +class PersonFreebusy(CommonFreebusy, Handler):
1.65 +
1.66 + "Free/busy handling mechanisms specific to people."
1.67 +
1.68 + def _record_freebusy(self, from_organiser=True):
1.69 +
1.70 + """
1.71 + Record free/busy information for a message originating from an organiser
1.72 + if 'from_organiser' is set to a true value.
1.73 + """
1.74 +
1.75 + if from_organiser:
1.76 + organiser_item = self.require_organiser(from_organiser)
1.77 + if not organiser_item:
1.78 + return
1.79 +
1.80 + senders = [organiser_item]
1.81 + else:
1.82 + oa = self.require_organiser_and_attendees(from_organiser)
1.83 + if not oa:
1.84 + return
1.85 +
1.86 + organiser_item, attendees = oa
1.87 + senders = attendees.items()
1.88 +
1.89 + if not senders:
1.90 + return
1.91 +
1.92 + freebusy = [FreeBusyPeriod(p.get_start_point(), p.get_end_point()) for p in self.obj.get_period_values("FREEBUSY")]
1.93 + dtstart = self.obj.get_datetime("DTSTART")
1.94 + dtend = self.obj.get_datetime("DTEND")
1.95 + period = Period(dtstart, dtend, self.get_tzid())
1.96 +
1.97 + for sender, sender_attr in senders:
1.98 + stored_freebusy = self.store.get_freebusy_for_other_for_update(self.user, sender)
1.99 + try:
1.100 + replace_overlapping(stored_freebusy, period, freebusy)
1.101 + self.store.set_freebusy_for_other_in_update(self.user, stored_freebusy, sender)
1.102 + finally:
1.103 + self.store.release_freebusy(self.user)
1.104 +
1.105 +class Freebusy(PersonFreebusy):
1.106
1.107 "A free/busy handler."
1.108
2.1 --- a/imiptools/handlers/person_outgoing.py Fri Sep 11 17:30:32 2015 +0200
2.2 +++ b/imiptools/handlers/person_outgoing.py Fri Sep 11 17:31:56 2015 +0200
2.3 @@ -25,7 +25,7 @@
2.4 from imiptools.handlers import Handler
2.5 from imiptools.handlers.common import CommonEvent
2.6
2.7 -class PersonHandler(Handler, CommonEvent):
2.8 +class PersonHandler(CommonEvent, Handler):
2.9
2.10 "Handling mechanisms specific to people."
2.11
3.1 --- a/imiptools/handlers/resource.py Fri Sep 11 17:30:32 2015 +0200
3.2 +++ b/imiptools/handlers/resource.py Fri Sep 11 17:31:56 2015 +0200
3.3 @@ -24,7 +24,7 @@
3.4 from imiptools.handlers import Handler
3.5 from imiptools.handlers.common import CommonFreebusy, CommonEvent
3.6
3.7 -class ResourceHandler(Handler, CommonEvent):
3.8 +class ResourceHandler(CommonEvent, Handler):
3.9
3.10 "Handling mechanisms specific to resources."
3.11
3.12 @@ -259,7 +259,7 @@
3.13
3.14 self._record_and_respond(self._schedule_for_attendee)
3.15
3.16 -class Freebusy(Handler, CommonFreebusy):
3.17 +class Freebusy(CommonFreebusy, Handler):
3.18
3.19 "A free/busy handler."
3.20