1.1 --- a/imip_manager.py Wed Feb 11 17:05:36 2015 +0100
1.2 +++ b/imip_manager.py Wed Feb 11 17:06:21 2015 +0100
1.3 @@ -253,7 +253,7 @@
1.4 to_cancel = []
1.5
1.6 if added or removed:
1.7 - attendees = uri_items(self.obj.get_items("ATTENDEE"))
1.8 + attendees = uri_items(self.obj.get_items("ATTENDEE") or [])
1.9
1.10 if removed:
1.11 remaining = []
1.12 @@ -698,12 +698,12 @@
1.13 "Show form controls for a request concerning 'obj'."
1.14
1.15 page = self.page
1.16 + args = self.env.get_args()
1.17
1.18 is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.19
1.20 - attendees = uri_dict(obj.get_value_map("ATTENDEE"))
1.21 - is_attendee = attendees.has_key(self.user)
1.22 - attendee_attr = attendees.get(self.user)
1.23 + attendees = uri_values((obj.get_values("ATTENDEE") or []) + args.get("attendee", []))
1.24 + is_attendee = self.user in attendees
1.25
1.26 is_request = obj.get_value("UID") in self._get_requests()
1.27
1.28 @@ -733,6 +733,8 @@
1.29 page.input(name="cancel", type="submit", value="Cancel")
1.30 page.p.close()
1.31 else:
1.32 + page.p("As attendee, you can perform the following:")
1.33 +
1.34 page.p()
1.35 page.input(name="save", type="submit", value="Save")
1.36 page.add(" ")
1.37 @@ -776,7 +778,7 @@
1.38 # Add or remove new attendees.
1.39 # This does not affect the stored object.
1.40
1.41 - existing_attendees = uri_values(obj.get_values("ATTENDEE"))
1.42 + existing_attendees = uri_values(obj.get_values("ATTENDEE") or [])
1.43 new_attendees = args.get("added", [])
1.44 new_attendee = args.get("attendee", [""])[0]
1.45
1.46 @@ -921,14 +923,13 @@
1.47 # Handle potentially many values.
1.48
1.49 else:
1.50 - items = obj.get_items(name)
1.51 - if not items:
1.52 - continue
1.53 -
1.54 + items = obj.get_items(name) or []
1.55 rowspan = len(items)
1.56
1.57 if name == "ATTENDEE":
1.58 rowspan += len(new_attendees) + 1
1.59 + elif not items:
1.60 + continue
1.61
1.62 page.th(label, class_="objectheading", rowspan=rowspan)
1.63
1.64 @@ -943,7 +944,7 @@
1.65 if name in ("ATTENDEE", "ORGANIZER"):
1.66 value = get_uri(value)
1.67
1.68 - page.td(class_="objectattribute")
1.69 + page.td(class_="objectvalue")
1.70 page.add(value)
1.71 page.add(" ")
1.72
1.73 @@ -962,7 +963,7 @@
1.74 page.label("Uninvited", for_="remove-%d" % i, class_="removed")
1.75
1.76 else:
1.77 - page.td(class_="objectattribute")
1.78 + page.td(class_="objectvalue")
1.79 page.add(value)
1.80
1.81 page.td.close()
1.82 @@ -972,14 +973,21 @@
1.83
1.84 if is_organiser and name == "ATTENDEE":
1.85 for i, attendee in enumerate(new_attendees):
1.86 - page.tr()
1.87 + if not first:
1.88 + page.tr()
1.89 + else:
1.90 + first = False
1.91 +
1.92 page.td()
1.93 page.input(name="added", type="value", value=attendee)
1.94 page.input(name="removenew", type="submit", value=attendee, id="removenew-%d" % i, class_="remove")
1.95 page.label("Remove", for_="removenew-%d" % i, class_="remove")
1.96 page.td.close()
1.97 page.tr.close()
1.98 - page.tr()
1.99 +
1.100 + if not first:
1.101 + page.tr()
1.102 +
1.103 page.td()
1.104 page.input(name="attendee", type="value", value=new_attendee)
1.105 page.input(name="add", type="submit", value="add", id="add-%d" % i, class_="add")