# HG changeset patch # User Paul Boddie # Date 1244326461 -7200 # Node ID 8d69ccf101db25c245946be1b0df3c54182cad40 # Parent 1cbad5c4b7f0c02d44337ce6fe8ad6cba78925f8 Fixed form HTML and added title and category value retention across submissions. Simplified the date processing, producing errors for obvious fault conditions. diff -r 1cbad5c4b7f0 -r 8d69ccf101db actions/EventAggregatorNewEvent.py --- a/actions/EventAggregatorNewEvent.py Sat Jun 06 23:37:14 2009 +0200 +++ b/actions/EventAggregatorNewEvent.py Sun Jun 07 00:14:21 2009 +0200 @@ -25,14 +25,14 @@ "An event creation dialogue requesting various parameters." - def _get_selected(self, month, input_month): - return input_month is not None and month == input_month and 'selected="selected"' or '' + def _get_selected(self, value, input_value): + return input_value is not None and value == input_value and 'selected="selected"' or '' - def _get_input(self, form, name, default, error): - try: - return int(form.get(name, [None])[0] or default) - except ValueError: - return error + def _get_selected_for_list(self, value, input_values): + return value in input_values and 'selected="selected"' or '' + + def _get_input(self, form, name, default): + return int(form.get(name, [None])[0] or default) def get_form_html(self, buttons_html): _ = self._ @@ -41,12 +41,15 @@ category_list = [] + category_pagenames = form.get("category", []) + for category_name, category_pagename in \ EventAggregatorSupport.getCategoryMapping( EventAggregatorSupport.getCategories(request), request): - category_list.append('' % (category_pagename, category_name)) + selected = self._get_selected_for_list(category_pagename, category_pagenames) + category_list.append('' % (category_pagename, selected, category_name)) # Initialise month lists. @@ -55,10 +58,8 @@ end_month_list = [] end_month_list.append('') - start_month = self._get_input(form, "start-month", 0, None) - end_month = self._get_input(form, "end-month", 0, None) - start_year = self._get_input(form, "start-year", EventAggregatorSupport.getCurrentYear(), None) - end_year = self._get_input(form, "end-year", 0, None) + start_month = self._get_input(form, "start-month", 0) + end_month = self._get_input(form, "end-month", 0) # Prepare month lists, selecting specified months. @@ -77,11 +78,12 @@ "end_month_list" : "\n".join(end_month_list), "start_label" : _("Start date (day, month, year)"), "start_day_default" : form.get("start-day", [""])[0], - "start_year_default" : start_year, + "start_year_default" : form.get("start-year", [""])[0] or EventAggregatorSupport.getCurrentYear(), "end_label" : _("End date (day, month, year)"), "end_day_default" : form.get("end-day", [""])[0], "end_year_default" : form.get("end-year", [""])[0], "title_label" : _("Event title/summary"), + "title_default" : form.get("title", [""])[0], } return ''' @@ -89,7 +91,9 @@ - + + + @@ -160,21 +164,21 @@ _ = request.getText form = request.form - category_names = form.get("category", []) + category_pagenames = form.get("category", []) title = form.get("title", [None])[0] try: - start_day = self._get_input(form, "start-day", 0, None) - start_month = self._get_input(form, "start-month", 0, None) - start_year = self._get_input(form, "start-year", 0, None) - end_day = self._get_input(form, "end-day", start_day, None) - end_month = self._get_input(form, "end-month", start_month, None) - end_year = self._get_input(form, "end-year", start_year, None) + start_day = self._get_input(form, "start-day", 0) + start_month = self._get_input(form, "start-month", 0) + start_year = self._get_input(form, "start-year", 0) + end_day = self._get_input(form, "end-day", start_day) + end_month = self._get_input(form, "end-month", start_month) + end_year = self._get_input(form, "end-year", start_year) start_year, start_month, start_day = self.constrain_date(start_year, start_month, start_day) end_year, end_month, end_day = self.constrain_date(end_year, end_month, end_day) - except ValueError: + except (TypeError, ValueError): return 0, _("Days and years must be numbers yielding a valid date!") start_date = self.make_date_string(start_year, start_month, start_day) @@ -196,7 +200,7 @@ if EventAggregatorSupport.getFormat(page) == "wiki": event_details = {"start" : start_date, "end" : end_date, "title" : title, "summary" : title} body = EventAggregatorSupport.setEventDetails(body, event_details) - body = EventAggregatorSupport.setCategoryMembership(body, category_names) + body = EventAggregatorSupport.setCategoryMembership(body, category_pagenames) new_page.saveText(body, 0) # Redirect and return success.