1.1 --- a/imipweb/event.py Sat Apr 04 22:43:31 2015 +0200
1.2 +++ b/imipweb/event.py Sat Apr 04 23:21:26 2015 +0200
1.3 @@ -599,52 +599,9 @@
1.4 else:
1.5 first = False
1.6
1.7 - page.td(class_="objectvalue")
1.8 -
1.9 - # Obtain details of existing attendees.
1.10 -
1.11 - existing = value in existing_attendees
1.12 - attr = attendee_map.get(value)
1.13 - partstat = attr and attr.get("PARTSTAT")
1.14 -
1.15 - # Show a form control as organiser for new attendees.
1.16 -
1.17 - if is_organiser and not existing:
1.18 - page.input(name="attendee", type="value", value=value, size="40")
1.19 - else:
1.20 - page.input(name="attendee", type="hidden", value=value)
1.21 - page.add(value)
1.22 - page.add(" ")
1.23 -
1.24 - # Show participation status, editable for the current user.
1.25 -
1.26 - if value == self.user:
1.27 - self._show_menu("partstat", partstat, self.partstat_items, "partstat")
1.28 + # Obtain details of attendees to supply attributes.
1.29
1.30 - # Allow the participation indicator to act as a submit
1.31 - # button in order to refresh the page and show a control for
1.32 - # the current user, if indicated.
1.33 -
1.34 - elif is_organiser:
1.35 - page.input(name="partstat-refresh", type="submit", value="refresh", id="partstat-%d" % i, class_="refresh")
1.36 - page.label(dict(self.partstat_items).get(partstat, ""), for_="partstat-%s" % i, class_="partstat")
1.37 - else:
1.38 - page.span(dict(self.partstat_items).get(partstat, ""), class_="partstat")
1.39 -
1.40 - # Permit organisers to remove attendees.
1.41 -
1.42 - if is_organiser:
1.43 -
1.44 - # Permit the removal of newly-added attendees.
1.45 -
1.46 - remove_type = (existing and value != self.user) and "checkbox" or "submit"
1.47 -
1.48 - self._control("remove", remove_type, value, value in args.get("remove", []), id="remove-%d" % i, class_="remove")
1.49 -
1.50 - page.label("Remove", for_="remove-%d" % i, class_="remove")
1.51 - page.label("Uninvited", for_="remove-%d" % i, class_="removed")
1.52 -
1.53 - page.td.close()
1.54 + self.show_attendee(obj, i, value, attendee_map.get(value))
1.55 page.tr.close()
1.56
1.57 # Allow more attendees to be specified.
1.58 @@ -686,6 +643,61 @@
1.59
1.60 page.form.close()
1.61
1.62 + def show_attendee(self, obj, i, attendee, attendee_attr):
1.63 +
1.64 + """
1.65 + For the given object 'obj', show the attendee in position 'i' with the
1.66 + given 'attendee' value, having 'attendee_attr' as any stored attributes.
1.67 + """
1.68 +
1.69 + page = self.page
1.70 + args = self.env.get_args()
1.71 +
1.72 + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.73 + existing = attendee_attr is not None
1.74 + partstat = attendee_attr and attendee_attr.get("PARTSTAT")
1.75 +
1.76 + page.td(class_="objectvalue")
1.77 +
1.78 + # Show a form control as organiser for new attendees.
1.79 +
1.80 + if is_organiser and not existing:
1.81 + page.input(name="attendee", type="value", value=attendee, size="40")
1.82 + else:
1.83 + page.input(name="attendee", type="hidden", value=attendee)
1.84 + page.add(attendee)
1.85 + page.add(" ")
1.86 +
1.87 + # Show participation status, editable for the current user.
1.88 +
1.89 + if attendee == self.user:
1.90 + self._show_menu("partstat", partstat, self.partstat_items, "partstat")
1.91 +
1.92 + # Allow the participation indicator to act as a submit
1.93 + # button in order to refresh the page and show a control for
1.94 + # the current user, if indicated.
1.95 +
1.96 + elif is_organiser:
1.97 + page.input(name="partstat-refresh", type="submit", value="refresh", id="partstat-%d" % i, class_="refresh")
1.98 + page.label(dict(self.partstat_items).get(partstat, ""), for_="partstat-%s" % i, class_="partstat")
1.99 + else:
1.100 + page.span(dict(self.partstat_items).get(partstat, ""), class_="partstat")
1.101 +
1.102 + # Permit organisers to remove attendees.
1.103 +
1.104 + if is_organiser:
1.105 +
1.106 + # Permit the removal of newly-added attendees.
1.107 +
1.108 + remove_type = (existing and attendee != self.user) and "checkbox" or "submit"
1.109 +
1.110 + self._control("remove", remove_type, attendee, attendee in args.get("remove", []), id="remove-%d" % i, class_="remove")
1.111 +
1.112 + page.label("Remove", for_="remove-%d" % i, class_="remove")
1.113 + page.label("Uninvited", for_="remove-%d" % i, class_="removed")
1.114 +
1.115 + page.td.close()
1.116 +
1.117 def show_recurrences(self, obj):
1.118
1.119 "Show recurrences for the object having the given representation 'obj'."