# HG changeset patch # User Paul Boddie # Date 1278633405 -7200 # Node ID e5ca6e3d5301a0741e75b9414fc5a6cf178b8152 # Parent 9c231d98aedb352b4fde45d27935d5b2895a6da7 Fixed parameter passing to the summary action in the macro. Added support for criteria/expressions in the action, together with a preview of the evaluated result of such criteria at the current time. Added better labelling of calendar downloads/subscriptions in the macro, providing a preview of any evaluated criteria. Moved functionality for generating "full" month and year labels into the library. Added default date selection support in the ActionSupport.get_month_list and ActionSupport.get_year_defaults methods, along with the addition of extra blank fields in month lists where no default will be set. diff -r 9c231d98aedb -r e5ca6e3d5301 EventAggregatorSupport.py --- a/EventAggregatorSupport.py Thu Jul 08 22:18:54 2010 +0200 +++ b/EventAggregatorSupport.py Fri Jul 09 01:56:45 2010 +0200 @@ -161,7 +161,7 @@ else: return int(value) - def get_month_lists(self): + def get_month_lists(self, default_as_current=0): """ Return two lists of HTML element definitions corresponding to the start @@ -177,11 +177,15 @@ start_month_list = [] end_month_list = [] - start_month = self._get_input(form, "start-month", getCurrentMonth().month()) + start_month = self._get_input(form, "start-month", default_as_current and getCurrentMonth().month() or None) end_month = self._get_input(form, "end-month", start_month) # Prepare month lists, selecting specified months. + if not default_as_current: + start_month_list.append('') + end_month_list.append('') + for month in range(1, 13): month_label = _(getMonthLabel(month)) selected = self._get_selected(month, start_month) @@ -191,14 +195,14 @@ return start_month_list, end_month_list - def get_year_defaults(self): + def get_year_defaults(self, default_as_current=0): "Return defaults for the start and end years." form = self.get_form() - start_year_default = form.get("start-year", [""])[0] or getCurrentYear() - end_year_default = form.get("end-year", [""])[0] or start_year_default + start_year_default = form.get("start-year", [default_as_current and getCurrentYear() or ""])[0] + end_year_default = form.get("end-year", [default_as_current and start_year_default or ""])[0] return start_year_default, end_year_default @@ -1457,6 +1461,18 @@ else: return None +def getFullMonthLabel(request, year_month): + + """ + Return the full month plus year label using the given 'request' and + 'year_month'. + """ + + _ = request.getText + year, month = year_month.as_tuple() + month_label = _(getMonthLabel(month)) + return "%s %s" % (month_label, year) + # Page-related functions. def getPrettyPageName(page): diff -r 9c231d98aedb -r e5ca6e3d5301 actions/EventAggregatorNewEvent.py --- a/actions/EventAggregatorNewEvent.py Thu Jul 08 22:18:54 2010 +0200 +++ b/actions/EventAggregatorNewEvent.py Fri Jul 09 01:56:45 2010 +0200 @@ -82,8 +82,8 @@ # Initialise month lists. - start_month_list, end_month_list = self.get_month_lists() - start_year_default, end_year_default = self.get_year_defaults() + start_month_list, end_month_list = self.get_month_lists(default_as_current=1) + start_year_default, end_year_default = self.get_year_defaults(default_as_current=1) # Initialise regime lists. diff -r 9c231d98aedb -r e5ca6e3d5301 actions/EventAggregatorSummary.py --- a/actions/EventAggregatorSummary.py Thu Jul 08 22:18:54 2010 +0200 +++ b/actions/EventAggregatorSummary.py Fri Jul 09 01:56:45 2010 +0200 @@ -48,6 +48,19 @@ start_month_list, end_month_list = self.get_month_lists() start_year_default, end_year_default = self.get_year_defaults() + # Criteria instead of months and years. + + start_criteria_default = form.get("start", [""])[0] + end_criteria_default = form.get("end", [""])[0] + + start_criteria_evaluated = EventAggregatorSupport.getParameterMonth(start_criteria_default) + end_criteria_evaluated = EventAggregatorSupport.getParameterMonth(end_criteria_default) + + start_criteria_evaluated = start_criteria_evaluated and \ + EventAggregatorSupport.getFullMonthLabel(request, start_criteria_evaluated) or "" + end_criteria_evaluated = end_criteria_evaluated and \ + EventAggregatorSupport.getFullMonthLabel(request, end_criteria_evaluated) or "" + # Descriptions. descriptions = form.get("descriptions", [None])[0] @@ -71,11 +84,19 @@ "category_label" : _("Categories"), "category_list" : "\n".join(category_list), "start_month_list" : "\n".join(start_month_list), - "start_label" : _("Start year and month"), + "start_label" : _("Start month and year"), "start_year_default" : start_year_default, + "start_criteria_label" : _("or special criteria"), + "start_criteria_default": start_criteria_default, + "start_eval_label" : _(">>"), + "start_criteria_eval" : start_criteria_evaluated, "end_month_list" : "\n".join(end_month_list), - "end_label" : _("End year and month"), + "end_label" : _("End month and year"), "end_year_default" : end_year_default, + "end_criteria_label" : _("or special criteria"), + "end_criteria_default" : end_criteria_default, + "end_eval_label" : _(">>"), + "end_criteria_eval" : end_criteria_evaluated, "descriptions_label" : _("Use descriptions from..."), "descriptions_list" : "\n".join(descriptions_list), "format_label" : _("Summary format"), @@ -104,6 +125,14 @@ + + + + + %(start_criteria_eval)s + + + + + %(end_criteria_eval)s + + +