# HG changeset patch # User Paul Boddie # Date 1426021910 -3600 # Node ID 16e7fcd06b42b3eb0d368a92ed2ac3c2ef00973c # Parent 964f71637e1ba0ef600a75d786f4496d8224f414 Moved datetime control generation into a separate method. diff -r 964f71637e1b -r 16e7fcd06b42 imip_manager.py --- a/imip_manager.py Tue Mar 10 22:11:41 2015 +0100 +++ b/imip_manager.py Tue Mar 10 22:11:50 2015 +0100 @@ -938,34 +938,7 @@ else: dt, attr = dtend or dtstart, dtend_attr or dtstart_attr - # Show controls for editing as organiser. - - if is_organiser: - value = format_datetime(dt) - - page.td(class_="objectvalue %s" % field) - if name == "DTEND": - page.div(class_="dt disabled") - page.label("Specify end date", for_="dtend-enable", class_="enable") - page.div.close() - - page.div(class_="dt enabled") - self._show_date_controls(field, value, attr) - if name == "DTSTART": - page.br() - page.label("Specify times", for_="dttimes-enable", class_="time disabled enable") - page.label("Specify dates only", for_="dttimes-disable", class_="time enabled disable") - elif name == "DTEND": - page.br() - page.label("End on same day", for_="dtend-disable", class_="disable") - page.div.close() - - page.td.close() - - # Show a label as attendee. - - else: - page.td(self.format_datetime(dt, "full")) + self.show_datetime_controls(obj, dt, attr, name == "DTSTART") page.tr.close() @@ -1056,6 +1029,49 @@ page.form.close() + def show_datetime_controls(self, obj, dt, attr, is_start_datetime): + + """ + Show datetime details from the given 'obj' for the datetime 'dt' and + attributes 'attr', showing start details if 'is_start_datetime' is set + to a true value. Details will appear as controls for organisers and + labels for attendees. + """ + + page = self.page + is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user + + # Show controls for editing as organiser. + + if is_organiser: + value = format_datetime(dt) + page.td(class_="objectvalue dt%s" % (is_start_datetime and "start" or "end")) + + if is_start_datetime: + page.div(class_="dt enabled") + self._show_date_controls("dtstart", value, attr) + page.br() + page.label("Specify times", for_="dttimes-enable", class_="time disabled enable") + page.label("Specify dates only", for_="dttimes-disable", class_="time enabled disable") + page.div.close() + + else: + page.div(class_="dt disabled") + page.label("Specify end date", for_="dtend-enable", class_="enable") + page.div.close() + page.div(class_="dt enabled") + self._show_date_controls("dtend", value, attr) + page.br() + page.label("End on same day", for_="dtend-disable", class_="disable") + page.div.close() + + page.td.close() + + # Show a label as attendee. + + else: + page.td(self.format_datetime(dt, "full")) + def handle_new_attendees(self, obj): "Add or remove new attendees. This does not affect the stored object."