From 3775c8471da4342fac8b40ff0790cf0dc86d2a11 Mon Sep 17 00:00:00 2001
From: Julien Muchembled <jm@nexedi.com>
Date: Wed, 28 Oct 2009 10:49:32 +0000
Subject: [PATCH] Forward contents of the request to urls that actually render
 OOoChart fields

This is required to customize an OOoChart depending of values entered in a
dialog form.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30058 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Form/OOoChart.py | 43 ++++++++++++++++--------------------
 1 file changed, 19 insertions(+), 24 deletions(-)

diff --git a/product/ERP5Form/OOoChart.py b/product/ERP5Form/OOoChart.py
index ac4d4a6568..ff23ef9aca 100644
--- a/product/ERP5Form/OOoChart.py
+++ b/product/ERP5Form/OOoChart.py
@@ -26,6 +26,7 @@
 #
 ##############################################################################
 
+from ZTUtils import make_query
 from Products.Formulator import Widget
 from Products.Formulator import Widget, Validator
 from Products.Formulator.DummyField import fields
@@ -436,41 +437,35 @@ class OOoChartWidget(Widget.Widget):
     # Update the render format based on REQUEST parameters
     render_format = getattr(REQUEST, 'render_format', render_format)
     if render_format == 'html':
-      field_absolute_url = '%s/%s/%s' % (here.absolute_url(),
-                                         form.getId(),
-                                         field.getId())
       css_class = field.get_value('css_class')
       format = field.get_value('image_format') or 'png'
-      display = field.get_value('image_display')
+      query_dict = dict(REQUEST.form.items())
+      query_dict.update(render_format=format != 'raw' and format or '',
+                        render_prefix=render_prefix,
+                        display=field.get_value('image_display'))
+      # XXX make_query does not handle tuples properly so listbox should be
+      #     not editable (otherwise, REQUEST.form may contain listbox=()).
+      url = '%s/%s/%s?%s' % (here.absolute_url(), form.getId(), field.getId(),
+                             make_query(query_dict))
       if format in STANDARD_IMAGE_FORMAT_LIST:
-        main_content = '''<div class="OOoChartContent">
-          <img class="%s" src="%s?render_format=%s&display=%s&render_prefix=%s" title="%s" alt="%s"/">
+        return '''<div class="OOoChartContent">
+          <img class="%s" src="%s" title="%s" alt="%s"/">
           </div>''' % (css_class,
-                       field_absolute_url,
-                       format,
-                       display,
-                       render_prefix,
+                       url,
                        title,
                        alt)
-        return main_content
       elif format == 'raw':
         UrlIconOOo = '%s/misc_/ERP5OOo/OOo.png' % REQUEST['BASEPATH1']
-        main_content = '''<div class="OOoChartContent">
-          <a href="%s?render_format=&display=%s&render_prefix=%s"><img src="%s" alt="OOo"/></a></div>
-          ''' % (field_absolute_url,
-                 display,
-                 render_prefix,
-                 UrlIconOOo)
-        return main_content
+        return '''<div class="OOoChartContent">
+          <a href="%s"><img src="%s" alt="OOo"/></a>
+          </div>''' % (url,
+                       UrlIconOOo)
       elif format == 'pdf':
         UrlIconPdf = '%s/misc_/ERP5Form/PDF.png' % REQUEST['BASEPATH1']
-        main_content = '''<div class="OOoChartContent">
-          <a href="%s?render_format=pdf&display=%s"><img src="%s" alt="PDF" /></a>
-          </div>''' % (field_absolute_url,
-                       display,
-                       render_prefix,
+        return '''<div class="OOoChartContent">
+          <a href="%s"><img src="%s" alt="PDF" /></a>
+          </div>''' % (url,
                        UrlIconPdf)
-        return main_content
       else:
         raise NotImplementedError, 'Format: %s not handled' % format
 
-- 
2.30.9