[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