1.1 --- a/imiptools/handlers/person.py Sun Mar 22 19:04:48 2015 +0100
1.2 +++ b/imiptools/handlers/person.py Sun Mar 22 21:23:42 2015 +0100
1.3 @@ -32,6 +32,15 @@
1.4
1.5 def _record(self, from_organiser=True, queue=False, cancel=False):
1.6
1.7 + """
1.8 + Record details from the current object given a message originating
1.9 + from an organiser if 'from_organiser' is set to a true value, queuing a
1.10 + request if 'queue' is set to a true value, or cancelling an event if
1.11 + 'cancel' is set to a true value.
1.12 + """
1.13 +
1.14 + # Obtain valid organiser and attendee details.
1.15 +
1.16 oa = self.require_organiser_and_attendees(from_organiser)
1.17 if not oa:
1.18 return False
1.19 @@ -78,7 +87,7 @@
1.20
1.21 self.update_freebusy_from_organiser(attendee, organiser_item)
1.22
1.23 - # As organiser, update attendance.
1.24 + # As organiser, update attendance from valid attendees.
1.25
1.26 else:
1.27 if self.merge_attendance(attendees, organiser):
1.28 @@ -88,7 +97,10 @@
1.29
1.30 def _record_freebusy(self, from_organiser=True):
1.31
1.32 - "Record free/busy information for the received information."
1.33 + """
1.34 + Record free/busy information for a message originating from an organiser
1.35 + if 'from_organiser' is set to a true value.
1.36 + """
1.37
1.38 if from_organiser:
1.39 organiser_item = self.require_organiser(from_organiser)
2.1 --- a/imiptools/handlers/person_outgoing.py Sun Mar 22 19:04:48 2015 +0100
2.2 +++ b/imiptools/handlers/person_outgoing.py Sun Mar 22 21:23:42 2015 +0100
2.3 @@ -46,7 +46,11 @@
2.4
2.5 def _record(self, from_organiser=True, update_freebusy=False):
2.6
2.7 - "Record free/busy and object information."
2.8 + """
2.9 + Record details from the current object given a message originating
2.10 + from an organiser if 'from_organiser' is set to a true value, updating
2.11 + free/busy information if 'update_freebusy' is set to a true value.
2.12 + """
2.13
2.14 item = self._get_identity(from_organiser)
2.15 if not item:
2.16 @@ -68,7 +72,10 @@
2.17 self.store.remove_recurrences(identity, self.uid)
2.18
2.19 else:
2.20 - organiser_item, attendees = self.require_organiser_and_attendees(from_organiser)
2.21 + # Obtain valid attendees, merging their attendance with the stored
2.22 + # object.
2.23 +
2.24 + attendees = self.require_attendees(from_organiser)
2.25 self.merge_attendance(attendees, identity)
2.26
2.27 # Remove any associated request.
2.28 @@ -90,6 +97,8 @@
2.29 # recurrence information.
2.30
2.31 obj = self.get_object(identity)
2.32 + if not obj:
2.33 + return False # although this should not happen
2.34
2.35 # If newer than any old version, discard old details from the
2.36 # free/busy record and check for suitability.
2.37 @@ -126,6 +135,8 @@
2.38 # NOTE: cancellations.
2.39
2.40 obj = self.get_object(identity)
2.41 + if not obj:
2.42 + return False
2.43
2.44 attendees = uri_dict(obj.get_value_map("ATTENDEE"))
2.45 all_attendees = set(attendees.keys())
3.1 --- a/imiptools/handlers/resource.py Sun Mar 22 19:04:48 2015 +0100
3.2 +++ b/imiptools/handlers/resource.py Sun Mar 22 21:23:42 2015 +0100
3.3 @@ -31,6 +31,12 @@
3.4
3.5 def _record_and_respond(self, handle_for_attendee):
3.6
3.7 + """
3.8 + Record details from the incoming message, using the given
3.9 + 'handle_for_attendee' callable to process any valid message
3.10 + appropriately.
3.11 + """
3.12 +
3.13 oa = self.require_organiser_and_attendees()
3.14 if not oa:
3.15 return None
3.16 @@ -58,6 +64,11 @@
3.17
3.18 def _schedule_for_attendee(self, attendee, attendee_attr):
3.19
3.20 + """
3.21 + Schedule for the given 'attendee' and accompanying 'attendee_attr' the
3.22 + current object.
3.23 + """
3.24 +
3.25 # Interpretation of periods can depend on the time zone.
3.26
3.27 tzid = self.get_tzid(attendee)
3.28 @@ -114,6 +125,11 @@
3.29
3.30 def _cancel_for_attendee(self, attendee, attendee_attr):
3.31
3.32 + """
3.33 + Cancel for the given 'attendee' and accompanying 'attendee_attr' their
3.34 + attendance of the event described by the current object.
3.35 + """
3.36 +
3.37 self.store.cancel_event(attendee, self.uid, self.recurrenceid)
3.38
3.39 freebusy = self.store.get_freebusy(attendee)