1.1 --- a/imip_manager.py Tue Feb 10 00:40:51 2015 +0100
1.2 +++ b/imip_manager.py Tue Feb 10 16:43:16 2015 +0100
1.3 @@ -31,7 +31,8 @@
1.4 sys.path.append(LIBRARY_PATH)
1.5
1.6 from imiptools.content import Handler
1.7 -from imiptools.data import get_address, get_uri, make_freebusy, Object, to_part
1.8 +from imiptools.data import get_address, get_uri, make_freebusy, Object, to_part, \
1.9 + uri_dict, uri_item, uri_items, uri_values
1.10 from imiptools.dates import format_datetime, format_time, get_date, get_datetime, \
1.11 get_datetime_item, get_default_timezone, \
1.12 get_end_of_day, get_start_of_day, get_start_of_next_day, \
1.13 @@ -155,8 +156,8 @@
1.14 # also attending. The updated event will be saved by the outgoing
1.15 # handler.
1.16
1.17 - organiser = self.obj.get_value("ORGANIZER")
1.18 - attendees = self.obj.get_values("ATTENDEE")
1.19 + organiser = uri_values(self.obj.get_value("ORGANIZER"))
1.20 + attendees = uri_values(self.obj.get_values("ATTENDEE"))
1.21
1.22 if for_organiser:
1.23 recipients = [get_address(attendee) for attendee in attendees if attendee != self.user]
1.24 @@ -210,7 +211,7 @@
1.25
1.26 # Reply only on behalf of this user.
1.27
1.28 - for attendee, attendee_attr in self.obj.get_items("ATTENDEE"):
1.29 + for attendee, attendee_attr in uri_items(self.obj.get_items("ATTENDEE")):
1.30
1.31 if attendee == self.user:
1.32 if attendee_attr.has_key("RSVP"):
1.33 @@ -242,13 +243,13 @@
1.34 provided.
1.35 """
1.36
1.37 - organiser, organiser_attr = self.obj.get_item("ORGANIZER")
1.38 + organiser, organiser_attr = uri_item(self.obj.get_item("ORGANIZER"))
1.39
1.40 if self.messenger and self.messenger.sender != get_address(organiser):
1.41 organiser_attr["SENT-BY"] = get_uri(self.messenger.sender)
1.42
1.43 if removed:
1.44 - attendee_map = self.obj.get_value_map("ATTENDEE")
1.45 + attendee_map = uri_dict(self.obj.get_value_map("ATTENDEE"))
1.46 self.obj["ATTENDEE"] = [(attendee, attendee_attr)
1.47 for (attendee, attendee_attr) in attendee_map.items()
1.48 if attendee not in removed]
1.49 @@ -518,8 +519,8 @@
1.50 if args.has_key("summary"):
1.51 obj["SUMMARY"] = [(args["summary"][0], {})]
1.52
1.53 - organisers = obj.get_value_map("ORGANIZER")
1.54 - attendees = obj.get_value_map("ATTENDEE")
1.55 + organisers = uri_dict(obj.get_value_map("ORGANIZER"))
1.56 + attendees = uri_dict(obj.get_value_map("ATTENDEE"))
1.57
1.58 if args.has_key("partstat"):
1.59 for d in attendees, organisers:
1.60 @@ -528,7 +529,7 @@
1.61 if d[self.user].has_key("RSVP"):
1.62 del d[self.user]["RSVP"]
1.63
1.64 - is_organiser = obj.get_value("ORGANIZER") == self.user
1.65 + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.66
1.67 # Obtain any participants to be removed.
1.68
1.69 @@ -670,9 +671,9 @@
1.70
1.71 page = self.page
1.72
1.73 - is_organiser = obj.get_value("ORGANIZER") == self.user
1.74 + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.75
1.76 - attendees = obj.get_value_map("ATTENDEE")
1.77 + attendees = uri_dict(obj.get_value_map("ATTENDEE"))
1.78 is_attendee = attendees.has_key(self.user)
1.79 attendee_attr = attendees.get(self.user)
1.80
1.81 @@ -800,7 +801,7 @@
1.82 page.thead.close()
1.83 page.tbody()
1.84
1.85 - is_organiser = obj.get_value("ORGANIZER") == self.user
1.86 + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.87
1.88 for name, label in self.property_items:
1.89 page.tr()
1.90 @@ -885,6 +886,8 @@
1.91 first = False
1.92
1.93 if name in ("ATTENDEE", "ORGANIZER"):
1.94 + value = get_uri(value)
1.95 +
1.96 page.td(class_="objectattribute")
1.97 page.add(value)
1.98 page.add(" ")
1.99 @@ -1443,7 +1446,7 @@
1.100
1.101 has_continued = continuation and point != start
1.102 will_continue = not ends_on_same_day(point, end, tzid)
1.103 - is_organiser = obj and obj.get_value("ORGANIZER") == self.user
1.104 + is_organiser = obj and get_uri(obj.get_value("ORGANIZER")) == self.user
1.105
1.106 css = " ".join(
1.107 ["event"] +
2.1 --- a/imiptools/content.py Tue Feb 10 00:40:51 2015 +0100
2.2 +++ b/imiptools/content.py Tue Feb 10 16:43:16 2015 +0100
2.3 @@ -373,8 +373,8 @@
2.4 NOTE: incorporated into any new object assessment.
2.5 """
2.6
2.7 - old_attendees = obj.get_value_map("ATTENDEE")
2.8 - new_attendees = self.obj.get_value_map("ATTENDEE")
2.9 + old_attendees = uri_dict(obj.get_value_map("ATTENDEE"))
2.10 + new_attendees = uri_dict(self.obj.get_value_map("ATTENDEE"))
2.11
2.12 for attendee, attr in old_attendees.items():
2.13 old_partstat = attr.get("PARTSTAT")
3.1 --- a/imiptools/data.py Tue Feb 10 00:40:51 2015 +0100
3.2 +++ b/imiptools/data.py Tue Feb 10 16:43:16 2015 +0100
3.3 @@ -245,6 +245,11 @@
3.4 def get_uri(value):
3.5 return value.lower().startswith("mailto:") and value.lower() or ":" in value and value or "mailto:%s" % value.lower()
3.6
3.7 +uri_value = get_uri
3.8 +
3.9 +def uri_values(values):
3.10 + return map(get_uri, values)
3.11 +
3.12 def uri_dict(d):
3.13 return dict([(get_uri(key), value) for key, value in d.items()])
3.14