1.1 --- a/imipweb/event.py Wed Oct 14 18:23:01 2015 +0200
1.2 +++ b/imipweb/event.py Thu Oct 15 17:56:01 2015 +0200
1.3 @@ -19,7 +19,8 @@
1.4 this program. If not, see <http://www.gnu.org/licenses/>.
1.5 """
1.6
1.7 -from imiptools.data import get_uri, get_verbose_address, uri_dict, uri_items, uri_values
1.8 +from imiptools.data import get_uri, get_verbose_address, uri_dict, uri_items, \
1.9 + uri_parts, uri_values
1.10 from imiptools.dates import format_datetime, to_timezone
1.11 from imiptools.mail import Messenger
1.12 from imiptools.period import have_conflict
1.13 @@ -540,6 +541,7 @@
1.14 return
1.15
1.16 attendees = self.get_verbose_attendees(attendees)
1.17 + current_attendees = [uri for (name, uri) in uri_parts(self.get_current_attendees())]
1.18
1.19 # Get suggestions. Attendees are aggregated and reference the existing
1.20 # attendees suggesting them. Periods are referenced by each existing
1.21 @@ -555,7 +557,7 @@
1.22 # Get suggested attendees.
1.23
1.24 for suggested_uri, suggested_attr in uri_dict(obj.get_value_map("ATTENDEE")).items():
1.25 - if suggested_uri == attendee_uri:
1.26 + if suggested_uri == attendee_uri or suggested_uri in current_attendees:
1.27 continue
1.28 suggested = get_verbose_address(suggested_uri, suggested_attr)
1.29
1.30 @@ -586,10 +588,14 @@
1.31 suggested_attendees = list(suggested_attendees.items())
1.32 suggested_attendees.sort()
1.33
1.34 - for suggested, attendees in suggested_attendees:
1.35 + for i, (suggested, attendees) in enumerate(suggested_attendees):
1.36 page.tr()
1.37 page.td(suggested)
1.38 page.td(", ".join(attendees))
1.39 + page.td()
1.40 + self.control("suggested-attendee", "hidden", suggested)
1.41 + self.control("add-suggested-attendee-%d" % i, "submit", "Add")
1.42 + page.td.close()
1.43 page.tr.close()
1.44
1.45 page.tbody.close()
1.46 @@ -1072,6 +1078,19 @@
1.47 if args.has_key("add"):
1.48 attendees.append("")
1.49
1.50 + # Add attendees suggested in counter-proposals.
1.51 +
1.52 + add_suggested = self.prefixed_args("add-suggested-attendee-", int)
1.53 +
1.54 + if add_suggested:
1.55 + for i in add_suggested:
1.56 + try:
1.57 + suggested = args["suggested-attendee"][i]
1.58 + except (IndexError, KeyError):
1.59 + continue
1.60 + if suggested not in attendees:
1.61 + attendees.append(suggested)
1.62 +
1.63 # Only actually remove attendees if the event is unsent, if the attendee
1.64 # is new, or if it is the current user being removed.
1.65