# HG changeset patch # User Paul Boddie # Date 1427226070 -3600 # Node ID 0bd2a134baa6d2290b4e35844cb0e4309d90d3e0 # Parent a5caf1b4faa4d4cc37fb8ae1fb8d741948b00109 Fixed field value access for recurrence period controls. diff -r a5caf1b4faa4 -r 0bd2a134baa6 imip_manager.py --- a/imip_manager.py Tue Mar 24 20:39:21 2015 +0100 +++ b/imip_manager.py Tue Mar 24 20:41:10 2015 +0100 @@ -1379,7 +1379,7 @@ if show_start: page.div(class_="dt enabled") - self._show_date_controls(ssn("dtstart", "recur", index), start, None) + self._show_date_controls(ssn("dtstart", "recur", index), start, None, 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") @@ -1390,7 +1390,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) + self._show_date_controls(ssn("dtend", "recur", index), end, None, index) page.br() page.label("End on same day", for_=sn("dtend-enable", index), class_="disable") page.div.close() @@ -2135,7 +2135,7 @@ identifier = "slot-%s" % value return value, identifier - def _show_menu(self, name, default, items, class_=""): + def _show_menu(self, name, default, items, class_="", index=None): """ Show a select menu having the given 'name', set to the given 'default', @@ -2145,6 +2145,10 @@ page = self.page values = self.env.get_args().get(name, [default]) + if index is not None: + values = values[index:] + values = values and values[0:1] or [default] + page.select(name=name, class_=class_) for v, label in items: if v is None: @@ -2155,7 +2159,7 @@ page.option(label, value=v) page.select.close() - def _show_date_controls(self, name, default, tzid): + def _show_date_controls(self, name, default, tzid, index=None): """ Show date controls for a field with the given 'name' and 'default' value @@ -2175,14 +2179,18 @@ d = base + timedelta(i) items.append((format_datetime(d), self.format_date(d, "full"))) - self._show_menu("%s-date" % name, format_datetime(base), items) + self._show_menu("%s-date" % name, format_datetime(base), items, index=index) # Show time details. default_time = isinstance(default, datetime) and default or None - hour = args.get("%s-hour" % name, "%02d" % (default_time and default_time.hour or 0)) - minute = args.get("%s-minute" % name, "%02d" % (default_time and default_time.minute or 0)) - second = args.get("%s-second" % name, "%02d" % (default_time and default_time.second or 0)) + + hour = args.get("%s-hour" % name, [])[index or 0:] + hour = hour and hour[0] or "%02d" % (default_time and default_time.hour or 0) + minute = args.get("%s-minute" % name, [])[index or 0:] + minute = minute and minute[0] or "%02d" % (default_time and default_time.minute or 0) + second = args.get("%s-second" % name, [])[index or 0:] + second = second and second[0] or "%02d" % (default_time and default_time.second or 0) page.span(class_="time enabled") page.input(name="%s-hour" % name, type="text", value=hour, maxlength=2, size=2) @@ -2191,10 +2199,10 @@ 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) + self._show_timezone_menu("%s-tzid" % name, event_tzid, index) page.span.close() - def _show_timezone_menu(self, name, default): + def _show_timezone_menu(self, name, default, index=None): """ Show timezone controls using a menu with the given 'name', set to the @@ -2202,7 +2210,7 @@ """ entries = [(tzid, tzid) for tzid in pytz.all_timezones] - self._show_menu(name, default, entries) + self._show_menu(name, default, entries, index=index) # Incoming HTTP request direction.