1.1 --- a/imiptools/client.py Sun Oct 01 17:41:21 2017 +0200
1.2 +++ b/imiptools/client.py Sun Oct 01 22:32:11 2017 +0200
1.3 @@ -727,15 +727,50 @@
1.4 """
1.5
1.6 attendee_attr = uri_dict(self.obj.get_value_map("ATTENDEE")).get(self.user)
1.7 +
1.8 if not attendee_attr:
1.9 return None
1.10 +
1.11 + # Set the participation and remove any request for response indicator.
1.12 +
1.13 if partstat:
1.14 attendee_attr["PARTSTAT"] = partstat
1.15 if attendee_attr.has_key("RSVP"):
1.16 del attendee_attr["RSVP"]
1.17 - self.update_sender_attr(attendee_attr)
1.18 +
1.19 return attendee_attr
1.20
1.21 + def update_event(self, changed=False):
1.22 +
1.23 + """
1.24 + Update the event version information and details for sending. Where
1.25 + 'changed' is set to a true value for the attendee, the attendee list
1.26 + will be processed and preserved; otherwise, the attendee replying will
1.27 + be retained and the others removed from the object.
1.28 + """
1.29 +
1.30 + if self.is_organiser():
1.31 + self.update_sender()
1.32 + else:
1.33 + # Reply only on behalf of this user.
1.34 +
1.35 + attendee_attr = self.update_participation()
1.36 +
1.37 + if not attendee_attr:
1.38 + return False
1.39 +
1.40 + if not changed:
1.41 + self.obj["ATTENDEE"] = [(self.user, attendee_attr)]
1.42 +
1.43 + # Process attendee SENT-BY usage, timestamp and sequence details
1.44 + # appropriately for the sender's role.
1.45 +
1.46 + self.update_senders()
1.47 + self.update_dtstamp()
1.48 + self.update_sequence()
1.49 +
1.50 + return True
1.51 +
1.52 # General message generation methods.
1.53
1.54 def get_recipients(self, obj=None):
1.55 @@ -968,21 +1003,9 @@
1.56 will be sent instead of a reply.
1.57 """
1.58
1.59 - # Reply only on behalf of this user.
1.60 -
1.61 - attendee_attr = self.update_participation()
1.62 -
1.63 - if not attendee_attr:
1.64 + if not self.update_event(changed):
1.65 return False
1.66
1.67 - if not changed:
1.68 - self.obj["ATTENDEE"] = [(self.user, attendee_attr)]
1.69 - else:
1.70 - self.update_senders()
1.71 -
1.72 - self.update_dtstamp()
1.73 - self.update_sequence()
1.74 -
1.75 parts = [self.object_to_part(changed and "COUNTER" or "REPLY", self.obj)]
1.76
1.77 # Create and send the response.
1.78 @@ -1014,10 +1037,7 @@
1.79 recurrence instances that are already stored.
1.80 """
1.81
1.82 - self.update_sender()
1.83 - self.update_senders()
1.84 - self.update_dtstamp()
1.85 - self.update_sequence()
1.86 + self.update_event()
1.87
1.88 if method == "REQUEST":
1.89