1.1 --- a/imiptools/handlers/person_outgoing.py Tue Oct 13 23:33:25 2015 +0200
1.2 +++ b/imiptools/handlers/person_outgoing.py Wed Oct 14 00:46:48 2015 +0200
1.3 @@ -21,7 +21,8 @@
1.4 """
1.5
1.6 from imiptools.client import Client
1.7 -from imiptools.data import get_uri, uri_dict, uri_values
1.8 +from imiptools.config import MESSAGE_SENDER
1.9 +from imiptools.data import get_uri, uri_dict, uri_items, uri_values
1.10 from imiptools.handlers import Handler
1.11 from imiptools.handlers.common import CommonEvent
1.12
1.13 @@ -38,9 +39,21 @@
1.14 in this way.
1.15 """
1.16
1.17 - if self.obj:
1.18 + if self.obj and not self.user:
1.19 from_organiser = method in self.organiser_methods
1.20 - self.user = get_uri(self.obj.get_value(from_organiser and "ORGANIZER" or "ATTENDEE"))
1.21 + if from_organiser:
1.22 + self.user = get_uri(self.obj.get_value("ORGANIZER"))
1.23 +
1.24 + # Since there may be many attendees in an attendee-provided outgoing
1.25 + # message, because counter-proposals can have more than one
1.26 + # attendee, the attendee originating from the calendar system is
1.27 + # chosen.
1.28 +
1.29 + else:
1.30 + calendar_uri = get_uri(MESSAGE_SENDER)
1.31 + for attendee, attendee_attr in uri_items(self.obj.get_items("ATTENDEE")):
1.32 + if attendee_attr.get("SENT-BY") == calendar_uri:
1.33 + self.user = get_uri(attendee)
1.34
1.35 def _add(self):
1.36
1.37 @@ -49,14 +62,11 @@
1.38 if not Client.is_participating(self):
1.39 return False
1.40
1.41 - # Obtain valid organiser and attendee details.
1.42 + # Check for event using UID.
1.43
1.44 - oa = self.require_organiser_and_attendees()
1.45 - if not oa:
1.46 + if not self.have_new_object():
1.47 return False
1.48
1.49 - (organiser, organiser_attr), attendees = oa
1.50 -
1.51 # Ignore unknown objects.
1.52
1.53 if not self.get_stored_object_version():