1.1 --- a/imiptools/content.py Wed Dec 10 18:42:08 2014 +0100
1.2 +++ b/imiptools/content.py Wed Dec 10 18:45:47 2014 +0100
1.3 @@ -11,6 +11,7 @@
1.4 from pytz import timezone, UnknownTimeZoneError
1.5 from vCalendar import parse, ParseError, to_dict
1.6 from vRecurrence import get_parameters, get_rule
1.7 +import email.utils
1.8 import imip_store
1.9 import re
1.10
1.11 @@ -117,12 +118,26 @@
1.12 else:
1.13 return dt.strftime("%Y%m%d")
1.14
1.15 +def get_addresses(values):
1.16 + return [address for name, address in email.utils.getaddresses(values)]
1.17 +
1.18 def get_address(value):
1.19 + value = value.lower()
1.20 return value.startswith("mailto:") and value[7:] or value
1.21
1.22 def get_uri(value):
1.23 + value = value.lower()
1.24 return value.startswith("mailto:") and value or "mailto:%s" % value
1.25
1.26 +def uri_dict(d):
1.27 + return dict([(get_uri(key), value) for key, value in d.items()])
1.28 +
1.29 +def uri_item(item):
1.30 + return get_uri(item[0]), item[1]
1.31 +
1.32 +def uri_items(items):
1.33 + return [(get_uri(value), attr) for value, attr in items]
1.34 +
1.35 def get_datetime(value, attr=None):
1.36
1.37 """
1.38 @@ -339,8 +354,8 @@
1.39 """
1.40
1.41 self.details = details
1.42 - self.senders = senders and set(senders)
1.43 - self.recipients = recipients and set(recipients)
1.44 + self.senders = senders and set(map(get_address, senders))
1.45 + self.recipients = recipients and set(map(get_address, recipients))
1.46 self.messenger = messenger
1.47
1.48 self.uid = get_value(details, "UID")
1.49 @@ -405,10 +420,12 @@
1.50 """
1.51 Return the organiser and attendees for the current object, filtered by
1.52 the recipients of interest. Return None if no identities are eligible.
1.53 +
1.54 + Organiser and attendee identities are provided as lower case values.
1.55 """
1.56
1.57 - attendee_map = self.get_value_map("ATTENDEE")
1.58 - organiser = self.get_item("ORGANIZER")
1.59 + attendee_map = uri_dict(self.get_value_map("ATTENDEE"))
1.60 + organiser = uri_item(self.get_item("ORGANIZER"))
1.61
1.62 # Only provide details for recipients who are also attendees.
1.63