# HG changeset patch # User Paul Boddie # Date 1445013936 -7200 # Node ID 5eee0884edfa02c443a10ef23da3608b315d4d6d # Parent afc9b603fccabcffd1cdc013bb28be5c8a366b8d Moved sender updating to the client abstraction, removing only SENT-BY attributes referring to the calendar system for attendees other than the current user. diff -r afc9b603fcca -r 5eee0884edfa imiptools/client.py --- a/imiptools/client.py Fri Oct 16 16:19:05 2015 +0200 +++ b/imiptools/client.py Fri Oct 16 18:45:36 2015 +0200 @@ -194,6 +194,23 @@ # Common operations on calendar data. + def update_senders(self, obj=None): + + """ + Update sender details in 'obj', or the current object if not indicated, + removing SENT-BY attributes for attendees other than the current user if + those attributes give the URI of the calendar system. + """ + + obj = obj or self.obj + calendar_uri = get_uri(self.messenger.sender) + for attendee, attendee_attr in uri_items(obj.get_items("ATTENDEE")): + if attendee != self.user: + if attendee_attr.get("SENT-BY") == calendar_uri: + del attendee_attr["SENT-BY"] + else: + attendee_attr["SENT-BY"] = calendar_uri + def update_sender(self, attr): "Update the SENT-BY attribute of the 'attr' sender metadata." @@ -205,7 +222,7 @@ "Return the attendee who sent the current object." - calendar_uri = get_uri(config.MESSAGE_SENDER) + calendar_uri = get_uri(self.messenger.sender) for attendee, attendee_attr in uri_items(self.obj.get_items("ATTENDEE")): if attendee_attr.get("SENT-BY") == calendar_uri: return get_uri(attendee) diff -r afc9b603fcca -r 5eee0884edfa imiptools/data.py --- a/imiptools/data.py Fri Oct 16 16:19:05 2015 +0200 +++ b/imiptools/data.py Fri Oct 16 18:45:36 2015 +0200 @@ -442,14 +442,6 @@ self["SEQUENCE"] = [(str(int(sequence) + (increment and 1 or 0)), {})] return sequence - def update_senders(self, user=None): - - "Remove SENT-BY attributes from properties." - - for identity, attr in self.get_items("ATTENDEE") or []: - if attr.has_key("SENT-BY") and (not user or get_uri(identity) != user): - del attr["SENT-BY"] - def update_exceptions(self, excluded): """ diff -r afc9b603fcca -r 5eee0884edfa imipweb/resource.py --- a/imipweb/resource.py Fri Oct 16 16:19:05 2015 +0200 +++ b/imipweb/resource.py Fri Oct 16 18:45:36 2015 +0200 @@ -289,7 +289,7 @@ return False method = "DECLINECOUNTER" - obj.update_senders() + self.update_senders(obj=obj) obj.update_dtstamp() obj.update_sequence(False) self._send_message(get_address(self.user), [get_address(attendee)], parts=[obj.to_part(method)]) @@ -314,7 +314,7 @@ if not changed: self.obj["ATTENDEE"] = [(self.user, attendee_attr)] else: - self.obj.update_senders(self.user) + self.update_senders() self.update_dtstamp() self.update_sequence(False) @@ -339,7 +339,7 @@ organiser, organiser_attr = uri_item(self.obj.get_item("ORGANIZER")) self.update_sender(organiser_attr) - self.obj.update_senders() + self.update_senders() self.update_dtstamp() self.update_sequence(True)