# HG changeset patch # User Paul Boddie # Date 1444924561 -7200 # Node ID 40f53e26c74e26af95b422d4258732dc813d3247 # Parent d220d0bbecdcbaccfcdf5b98ef48daa0aa6df06e Added support for adding suggested attendees from counter-proposals. diff -r d220d0bbecdc -r 40f53e26c74e imipweb/event.py --- a/imipweb/event.py Wed Oct 14 18:23:01 2015 +0200 +++ b/imipweb/event.py Thu Oct 15 17:56:01 2015 +0200 @@ -19,7 +19,8 @@ this program. If not, see . """ -from imiptools.data import get_uri, get_verbose_address, uri_dict, uri_items, uri_values +from imiptools.data import get_uri, get_verbose_address, uri_dict, uri_items, \ + uri_parts, uri_values from imiptools.dates import format_datetime, to_timezone from imiptools.mail import Messenger from imiptools.period import have_conflict @@ -540,6 +541,7 @@ return attendees = self.get_verbose_attendees(attendees) + current_attendees = [uri for (name, uri) in uri_parts(self.get_current_attendees())] # Get suggestions. Attendees are aggregated and reference the existing # attendees suggesting them. Periods are referenced by each existing @@ -555,7 +557,7 @@ # Get suggested attendees. for suggested_uri, suggested_attr in uri_dict(obj.get_value_map("ATTENDEE")).items(): - if suggested_uri == attendee_uri: + if suggested_uri == attendee_uri or suggested_uri in current_attendees: continue suggested = get_verbose_address(suggested_uri, suggested_attr) @@ -586,10 +588,14 @@ suggested_attendees = list(suggested_attendees.items()) suggested_attendees.sort() - for suggested, attendees in suggested_attendees: + for i, (suggested, attendees) in enumerate(suggested_attendees): page.tr() page.td(suggested) page.td(", ".join(attendees)) + page.td() + self.control("suggested-attendee", "hidden", suggested) + self.control("add-suggested-attendee-%d" % i, "submit", "Add") + page.td.close() page.tr.close() page.tbody.close() @@ -1072,6 +1078,19 @@ if args.has_key("add"): attendees.append("") + # Add attendees suggested in counter-proposals. + + add_suggested = self.prefixed_args("add-suggested-attendee-", int) + + if add_suggested: + for i in add_suggested: + try: + suggested = args["suggested-attendee"][i] + except (IndexError, KeyError): + continue + if suggested not in attendees: + attendees.append(suggested) + # Only actually remove attendees if the event is unsent, if the attendee # is new, or if it is the current user being removed.