# HG changeset patch # User Paul Boddie # Date 1427806450 -7200 # Node ID 81644290914bec64d7520a92590d14dac3462373 # Parent f79c4c90021bc029a3c9c16447a4267d18ae9dcc Removed the end time zone selector for recurrences since the period data type probably doesn't support a combination of time zones. diff -r f79c4c90021b -r 81644290914b imipweb/event.py --- a/imipweb/event.py Tue Mar 31 14:31:08 2015 +0200 +++ b/imipweb/event.py Tue Mar 31 14:54:10 2015 +0200 @@ -177,7 +177,7 @@ all_dtend_enabled = args.get("dtend-control-recur", []) all_dttimes_enabled = args.get("dttimes-control-recur", []) all_start_values = self.get_date_control_values("dtstart-recur", multiple=True) - all_end_values = self.get_date_control_values("dtend-recur", multiple=True) + all_end_values = self.get_date_control_values("dtend-recur", multiple=True, tzid_name="dtstart-recur") for index, (start_values, end_values, dtend_enabled, dttimes_enabled) in \ enumerate(map(None, all_start_values, all_end_values, all_dtend_enabled, all_dttimes_enabled)): @@ -259,11 +259,14 @@ return None - def get_date_control_values(self, name, multiple=False): + def get_date_control_values(self, name, multiple=False, tzid_name=None): """ Return a dictionary containing date, time and tzid entries for fields - starting with 'name'. + starting with 'name'. If 'multiple' is set to a true value, many + dictionaries will be returned corresponding to a collection of + datetimes. If 'tzid_name' is specified, the time zone information will + be acquired from a field starting with 'tzid_name' instead of 'name'. """ args = self.env.get_args() @@ -272,7 +275,7 @@ hours = args.get("%s-hour" % name, []) minutes = args.get("%s-minute" % name, []) seconds = args.get("%s-second" % name, []) - tzids = args.get("%s-tzid" % name, []) + tzids = args.get("%s-tzid" % (tzid_name or name), []) # Handle absent values by employing None values. @@ -776,7 +779,7 @@ if show_start: page.div(class_="dt enabled") - self._show_date_controls(ssn("dtstart", "recur", index), start, None, index) + self._show_date_controls(ssn("dtstart", "recur", index), start, index=index) page.br() page.label("Specify times", for_=sn("dttimes-enable", index), class_="time disabled enable") page.label("Specify dates only", for_=sn("dttimes-enable", index), class_="time enabled disable") @@ -787,7 +790,7 @@ page.label("Specify end date", for_=sn("dtend-enable", index), class_="enable") page.div.close() page.div(class_="dt enabled") - self._show_date_controls(ssn("dtend", "recur", index), end, None, index) + self._show_date_controls(ssn("dtend", "recur", index), end, index=index, show_tzid=False) page.br() page.label("End on same day", for_=sn("dtend-enable", index), class_="disable") page.div.close() @@ -1005,18 +1008,22 @@ page.option(label, value=v) page.select.close() - def _show_date_controls(self, name, default, tzid, index=None): + def _show_date_controls(self, name, default, tzid=None, index=None, show_tzid=True): """ Show date controls for a field with the given 'name' and 'default' value - and 'tzid'. + and 'tzid'. If 'index' is specified, default field values will be + overridden by the element from a collection of existing form values with + the specified index; otherwise, field values will be overridden by a + single form value. + + If 'show_tzid' is set to a false value, the time zone menu will not be + provided. """ page = self.page args = self.env.get_args() - event_tzid = tzid or self.get_tzid() - # Show dates for up to one week around the current date. base = to_date(default) @@ -1044,8 +1051,10 @@ page.input(name="%s-minute" % name, type="text", value=minute, maxlength=2, size=2) page.add(":") page.input(name="%s-second" % name, type="text", value=second, maxlength=2, size=2) - page.add(" ") - self._show_timezone_menu("%s-tzid" % name, event_tzid, index) + if show_tzid: + tzid = tzid or self.get_tzid() + page.add(" ") + self._show_timezone_menu("%s-tzid" % name, tzid, index) page.span.close() def _show_timezone_menu(self, name, default, index=None):