# HG changeset patch # User Paul Boddie # Date 1428182486 -7200 # Node ID a9c6e1a6dfa2c3178cba864ee8276e7c7f5bbdb1 # Parent a165cad1a1ff8fa36734174759faba87ededd2ab Moved the attendee presentation into a separate method, employing the nature of an attendee's attributes to determine whether they were already present. diff -r a165cad1a1ff -r a9c6e1a6dfa2 imipweb/event.py --- a/imipweb/event.py Sat Apr 04 22:43:31 2015 +0200 +++ b/imipweb/event.py Sat Apr 04 23:21:26 2015 +0200 @@ -599,52 +599,9 @@ else: first = False - page.td(class_="objectvalue") - - # Obtain details of existing attendees. - - existing = value in existing_attendees - attr = attendee_map.get(value) - partstat = attr and attr.get("PARTSTAT") - - # Show a form control as organiser for new attendees. - - if is_organiser and not existing: - page.input(name="attendee", type="value", value=value, size="40") - else: - page.input(name="attendee", type="hidden", value=value) - page.add(value) - page.add(" ") - - # Show participation status, editable for the current user. - - if value == self.user: - self._show_menu("partstat", partstat, self.partstat_items, "partstat") + # Obtain details of attendees to supply attributes. - # Allow the participation indicator to act as a submit - # button in order to refresh the page and show a control for - # the current user, if indicated. - - elif is_organiser: - page.input(name="partstat-refresh", type="submit", value="refresh", id="partstat-%d" % i, class_="refresh") - page.label(dict(self.partstat_items).get(partstat, ""), for_="partstat-%s" % i, class_="partstat") - else: - page.span(dict(self.partstat_items).get(partstat, ""), class_="partstat") - - # Permit organisers to remove attendees. - - if is_organiser: - - # Permit the removal of newly-added attendees. - - remove_type = (existing and value != self.user) and "checkbox" or "submit" - - self._control("remove", remove_type, value, value in args.get("remove", []), id="remove-%d" % i, class_="remove") - - page.label("Remove", for_="remove-%d" % i, class_="remove") - page.label("Uninvited", for_="remove-%d" % i, class_="removed") - - page.td.close() + self.show_attendee(obj, i, value, attendee_map.get(value)) page.tr.close() # Allow more attendees to be specified. @@ -686,6 +643,61 @@ page.form.close() + def show_attendee(self, obj, i, attendee, attendee_attr): + + """ + For the given object 'obj', show the attendee in position 'i' with the + given 'attendee' value, having 'attendee_attr' as any stored attributes. + """ + + page = self.page + args = self.env.get_args() + + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user + existing = attendee_attr is not None + partstat = attendee_attr and attendee_attr.get("PARTSTAT") + + page.td(class_="objectvalue") + + # Show a form control as organiser for new attendees. + + if is_organiser and not existing: + page.input(name="attendee", type="value", value=attendee, size="40") + else: + page.input(name="attendee", type="hidden", value=attendee) + page.add(attendee) + page.add(" ") + + # Show participation status, editable for the current user. + + if attendee == self.user: + self._show_menu("partstat", partstat, self.partstat_items, "partstat") + + # Allow the participation indicator to act as a submit + # button in order to refresh the page and show a control for + # the current user, if indicated. + + elif is_organiser: + page.input(name="partstat-refresh", type="submit", value="refresh", id="partstat-%d" % i, class_="refresh") + page.label(dict(self.partstat_items).get(partstat, ""), for_="partstat-%s" % i, class_="partstat") + else: + page.span(dict(self.partstat_items).get(partstat, ""), class_="partstat") + + # Permit organisers to remove attendees. + + if is_organiser: + + # Permit the removal of newly-added attendees. + + remove_type = (existing and attendee != self.user) and "checkbox" or "submit" + + self._control("remove", remove_type, attendee, attendee in args.get("remove", []), id="remove-%d" % i, class_="remove") + + page.label("Remove", for_="remove-%d" % i, class_="remove") + page.label("Uninvited", for_="remove-%d" % i, class_="removed") + + page.td.close() + def show_recurrences(self, obj): "Show recurrences for the object having the given representation 'obj'."