1.1 --- a/imipweb/event.py Tue Mar 31 14:31:08 2015 +0200
1.2 +++ b/imipweb/event.py Tue Mar 31 14:54:10 2015 +0200
1.3 @@ -177,7 +177,7 @@
1.4 all_dtend_enabled = args.get("dtend-control-recur", [])
1.5 all_dttimes_enabled = args.get("dttimes-control-recur", [])
1.6 all_start_values = self.get_date_control_values("dtstart-recur", multiple=True)
1.7 - all_end_values = self.get_date_control_values("dtend-recur", multiple=True)
1.8 + all_end_values = self.get_date_control_values("dtend-recur", multiple=True, tzid_name="dtstart-recur")
1.9
1.10 for index, (start_values, end_values, dtend_enabled, dttimes_enabled) in \
1.11 enumerate(map(None, all_start_values, all_end_values, all_dtend_enabled, all_dttimes_enabled)):
1.12 @@ -259,11 +259,14 @@
1.13
1.14 return None
1.15
1.16 - def get_date_control_values(self, name, multiple=False):
1.17 + def get_date_control_values(self, name, multiple=False, tzid_name=None):
1.18
1.19 """
1.20 Return a dictionary containing date, time and tzid entries for fields
1.21 - starting with 'name'.
1.22 + starting with 'name'. If 'multiple' is set to a true value, many
1.23 + dictionaries will be returned corresponding to a collection of
1.24 + datetimes. If 'tzid_name' is specified, the time zone information will
1.25 + be acquired from a field starting with 'tzid_name' instead of 'name'.
1.26 """
1.27
1.28 args = self.env.get_args()
1.29 @@ -272,7 +275,7 @@
1.30 hours = args.get("%s-hour" % name, [])
1.31 minutes = args.get("%s-minute" % name, [])
1.32 seconds = args.get("%s-second" % name, [])
1.33 - tzids = args.get("%s-tzid" % name, [])
1.34 + tzids = args.get("%s-tzid" % (tzid_name or name), [])
1.35
1.36 # Handle absent values by employing None values.
1.37
1.38 @@ -776,7 +779,7 @@
1.39
1.40 if show_start:
1.41 page.div(class_="dt enabled")
1.42 - self._show_date_controls(ssn("dtstart", "recur", index), start, None, index)
1.43 + self._show_date_controls(ssn("dtstart", "recur", index), start, index=index)
1.44 page.br()
1.45 page.label("Specify times", for_=sn("dttimes-enable", index), class_="time disabled enable")
1.46 page.label("Specify dates only", for_=sn("dttimes-enable", index), class_="time enabled disable")
1.47 @@ -787,7 +790,7 @@
1.48 page.label("Specify end date", for_=sn("dtend-enable", index), class_="enable")
1.49 page.div.close()
1.50 page.div(class_="dt enabled")
1.51 - self._show_date_controls(ssn("dtend", "recur", index), end, None, index)
1.52 + self._show_date_controls(ssn("dtend", "recur", index), end, index=index, show_tzid=False)
1.53 page.br()
1.54 page.label("End on same day", for_=sn("dtend-enable", index), class_="disable")
1.55 page.div.close()
1.56 @@ -1005,18 +1008,22 @@
1.57 page.option(label, value=v)
1.58 page.select.close()
1.59
1.60 - def _show_date_controls(self, name, default, tzid, index=None):
1.61 + def _show_date_controls(self, name, default, tzid=None, index=None, show_tzid=True):
1.62
1.63 """
1.64 Show date controls for a field with the given 'name' and 'default' value
1.65 - and 'tzid'.
1.66 + and 'tzid'. If 'index' is specified, default field values will be
1.67 + overridden by the element from a collection of existing form values with
1.68 + the specified index; otherwise, field values will be overridden by a
1.69 + single form value.
1.70 +
1.71 + If 'show_tzid' is set to a false value, the time zone menu will not be
1.72 + provided.
1.73 """
1.74
1.75 page = self.page
1.76 args = self.env.get_args()
1.77
1.78 - event_tzid = tzid or self.get_tzid()
1.79 -
1.80 # Show dates for up to one week around the current date.
1.81
1.82 base = to_date(default)
1.83 @@ -1044,8 +1051,10 @@
1.84 page.input(name="%s-minute" % name, type="text", value=minute, maxlength=2, size=2)
1.85 page.add(":")
1.86 page.input(name="%s-second" % name, type="text", value=second, maxlength=2, size=2)
1.87 - page.add(" ")
1.88 - self._show_timezone_menu("%s-tzid" % name, event_tzid, index)
1.89 + if show_tzid:
1.90 + tzid = tzid or self.get_tzid()
1.91 + page.add(" ")
1.92 + self._show_timezone_menu("%s-tzid" % name, tzid, index)
1.93 page.span.close()
1.94
1.95 def _show_timezone_menu(self, name, default, index=None):