[Erp5-report] r22002 - /erp5/trunk/products/ERP5Form/Report.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jun 27 11:38:40 CEST 2008
Author: vincent
Date: Fri Jun 27 11:38:30 2008
New Revision: 22002
URL: http://svn.erp5.org?rev=22002&view=rev
Log:
Add an optional parameter to push and pop methods. This allow generation of the right selection name when a listbox in a report mode is to be rendered with a prefix. As the renderer is not instanciated yet, it's not possible to just use it to retrieve the prefix.
Modified:
erp5/trunk/products/ERP5Form/Report.py
Modified: erp5/trunk/products/ERP5Form/Report.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Report.py?rev=22002&r1=22001&r2=22002&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/Report.py (original)
+++ erp5/trunk/products/ERP5Form/Report.py Fri Jun 27 11:38:30 2008
@@ -266,7 +266,7 @@
_no_parameter_ = []
security.declarePublic('pushReport')
- def pushReport(self, context):
+ def pushReport(self, context, field_prefix=None):
REQUEST = get_request()
for k,v in self.param_dict.items():
self.saved_request[k] = REQUEST.form.get(k, self._no_parameter_)
@@ -275,8 +275,10 @@
portal_selections = context.portal_selections
selection_list = [self.selection_name]
if self.getFormId() and hasattr(context[self.getFormId()], 'listbox') :
- selection_list += [
- context[self.getFormId()].listbox.get_value('selection_name') ]
+ selection_name = context[self.getFormId()].listbox.get_value('selection_name')
+ if field_prefix is not None:
+ selection_name = '%s_%s' % (field_prefix, selection_name)
+ selection_list += [selection_name]
# save report's selection and orignal form's selection,
#as ListBox will overwrite it
for selection_name in selection_list :
@@ -305,11 +307,12 @@
REQUEST, self.listbox_display_mode,
selection_name=selection_name)
if self.selection_params is not None:
- self.saved_selections[selection_name]['params'] = \
- portal_selections.getSelectionParams(
+ params = portal_selections.getSelectionParams(
selection_name, REQUEST=REQUEST)
+ self.saved_selections[selection_name]['params'] = params.copy()
+ params.update(self.selection_params)
portal_selections.setSelectionParamsFor(selection_name,
- self.selection_params, REQUEST=REQUEST)
+ params, REQUEST=REQUEST)
if self.selection_columns is not None:
self.saved_selections[selection_name]['columns'] = \
portal_selections.getSelectionColumns(selection_name,
@@ -327,7 +330,7 @@
REQUEST.form = {}
security.declarePublic('popReport')
- def popReport(self, context):
+ def popReport(self, context, field_prefix=None):
REQUEST = get_request()
for k,v in self.param_dict.items():
if self.saved_request[k] is self._no_parameter_:
@@ -338,8 +341,12 @@
portal_selections = context.portal_selections
selection_list = []
if self.getFormId() and hasattr(context[self.getFormId()], 'listbox') :
- selection_list += [
- context[self.getFormId()].listbox.get_value('selection_name') ]
+ selection_name = context[self.getFormId()].listbox.get_value('selection_name')
+ if field_prefix is not None:
+ # Return before cleanup, because there is no interest in cleaning up
+ # what won't be shared.
+ return
+ selection_list += [selection_name]
selection_list += [self.selection_name]
# restore report then form selection
for selection_name in selection_list:
@@ -381,4 +388,4 @@
REQUEST.form = self.saved_request_form
InitializeClass(ReportSection)
-allow_class(ReportSection)
+allow_class(ReportSection)
More information about the Erp5-report
mailing list