1.1 --- a/imiptools/client.py Mon Oct 16 23:11:23 2017 +0200
1.2 +++ b/imiptools/client.py Mon Oct 16 23:21:15 2017 +0200
1.3 @@ -24,8 +24,8 @@
1.4 from imiptools.data import Object, check_delegation, get_address, \
1.5 get_sender_identities, get_uri, \
1.6 get_window_end, is_new_object, make_freebusy, \
1.7 - make_uid, to_part, uri_dict, uri_item, uri_items, \
1.8 - uri_parts, uri_values
1.9 + make_uid, to_part, update_attendees_with_delegates, \
1.10 + uri_dict, uri_item, uri_items, uri_parts, uri_values
1.11 from imiptools.dates import check_permitted_values, format_datetime, \
1.12 get_datetime, get_default_timezone, \
1.13 get_duration, get_time, get_timestamp, \
1.14 @@ -547,32 +547,21 @@
1.15
1.16 # Get attendee details in a usable form.
1.17
1.18 - attendee_map = uri_dict(obj.get_value_map("ATTENDEE"))
1.19 + stored_attendees = uri_dict(obj.get_value_map("ATTENDEE"))
1.20
1.21 for attendee, attendee_attr in attendees.items():
1.22
1.23 # Update attendance in the loaded object for any recognised
1.24 # attendees.
1.25
1.26 - if attendee_map.has_key(attendee):
1.27 - attendee_map[attendee] = attendee_attr
1.28 -
1.29 - # Check for delegated attendees.
1.30 -
1.31 - for attendee, attendee_attr in attendees.items():
1.32 + if stored_attendees.has_key(attendee):
1.33 + stored_attendees[attendee] = attendee_attr
1.34
1.35 - # Identify delegates and check the delegation using the updated
1.36 - # attendee information.
1.37 -
1.38 - if not attendee_map.has_key(attendee) and \
1.39 - attendee_attr.has_key("DELEGATED-FROM") and \
1.40 - check_delegation(attendee_map, attendee, attendee_attr):
1.41 -
1.42 - attendee_map[attendee] = attendee_attr
1.43 + update_attendees_with_delegates(stored_attendees, attendees)
1.44
1.45 # Set the new details and store the object.
1.46
1.47 - obj["ATTENDEE"] = attendee_map.items()
1.48 + obj["ATTENDEE"] = stored_attendees.items()
1.49
1.50 # Set a specific recurrence or the complete event if not an additional
1.51 # occurrence.
2.1 --- a/imiptools/data.py Mon Oct 16 23:11:23 2017 +0200
2.2 +++ b/imiptools/data.py Mon Oct 16 23:21:15 2017 +0200
2.3 @@ -1198,4 +1198,24 @@
2.4
2.5 return to_timezone(start or datetime.now(), tzid) + timedelta(days)
2.6
2.7 +def update_attendees_with_delegates(stored_attendees, attendees):
2.8 +
2.9 + """
2.10 + Update the 'stored_attendees' mapping with delegate information from the
2.11 + given 'attendees' mapping.
2.12 + """
2.13 +
2.14 + # Check for delegated attendees.
2.15 +
2.16 + for attendee, attendee_attr in attendees.items():
2.17 +
2.18 + # Identify delegates and check the delegation using the updated
2.19 + # attendee information.
2.20 +
2.21 + if not stored_attendees.has_key(attendee) and \
2.22 + attendee_attr.has_key("DELEGATED-FROM") and \
2.23 + check_delegation(stored_attendees, attendee, attendee_attr):
2.24 +
2.25 + stored_attendees[attendee] = attendee_attr
2.26 +
2.27 # vim: tabstop=4 expandtab shiftwidth=4