[Erp5-report] r21998 - /erp5/trunk/products/ERP5Form/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jun 27 11:21:13 CEST 2008


Author: vincent
Date: Fri Jun 27 11:21:11 2008
New Revision: 21998

URL: http://svn.erp5.org?rev=21998&view=rev
Log:
Update Formulator rendering API (except css and odt) to make it accept a new "render_prefix" parameter.
Its basic purpose is similar to existing "key" parameter, but instead of replacing field id it gets prepended to it.
Its "evolved" purpose is to make it possible to distinguish multiple renderings of the *same* field (same form, same field) in a single rendering sequence (ie, in the same web page).
It's safe to just ignore it when writing a renderer.
Update all existing renderers, and monkeypatch a few more.
Ignore the new parameter in all of them except ListBox (stored on renderer instance but not used yet).

Modified:
    erp5/trunk/products/ERP5Form/DurationField.py
    erp5/trunk/products/ERP5Form/EditorField.py
    erp5/trunk/products/ERP5Form/FormBox.py
    erp5/trunk/products/ERP5Form/FormulatorPatch.py
    erp5/trunk/products/ERP5Form/HyperLinkField.py
    erp5/trunk/products/ERP5Form/ImageField.py
    erp5/trunk/products/ERP5Form/InputButtonField.py
    erp5/trunk/products/ERP5Form/ListBox.py
    erp5/trunk/products/ERP5Form/MatrixBox.py
    erp5/trunk/products/ERP5Form/MultiLinkField.py
    erp5/trunk/products/ERP5Form/MultiRelationField.py
    erp5/trunk/products/ERP5Form/OOoChart.py
    erp5/trunk/products/ERP5Form/POSBox.py
    erp5/trunk/products/ERP5Form/ParallelListField.py
    erp5/trunk/products/ERP5Form/PlanningBox.py
    erp5/trunk/products/ERP5Form/ZGDChart.py
    erp5/trunk/products/ERP5Form/ZPyChart.py

Modified: erp5/trunk/products/ERP5Form/DurationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/DurationField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/DurationField.py (original)
+++ erp5/trunk/products/ERP5Form/DurationField.py Fri Jun 27 11:21:11 2008
@@ -64,7 +64,7 @@
                              default="",
                              required=1)
 
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
     sub_field_render_list = []
     for title, sub_key, convertion in (('Hour', 'hour', HOUR_IN_SECOND),
                                 ('Minute', 'minute', MINUTE_IN_SECOND)):
@@ -80,7 +80,7 @@
                                    field, value, REQUEST=REQUEST))
     return ':'.join(sub_field_render_list)
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     sub_field_render_list = []
     for title, sub_key, convertion in (('Hour', 'hour', HOUR_IN_SECOND),
                                 ('Minute', 'minute', MINUTE_IN_SECOND)):
@@ -97,14 +97,14 @@
                       value, REQUEST, 'second'))
     return ':'.join(sub_field_render_list)
 
-  def render_sub_field_view(self, field, value, REQUEST=None):
+  def render_sub_field_view(self, field, value, REQUEST=None, render_prefix=None):
     """
     Render dynamically a subfield
     """
     return FormulatorPatch.IntegerFieldWidgetInstance.render_view(field, value,
                                                                REQUEST=REQUEST)
 
-  def render_sub_field(self, field, key, value, REQUEST, keyword):
+  def render_sub_field(self, field, key, value, REQUEST, keyword, render_prefix=None):
     """
     Render dynamically a subfield
     """

Modified: erp5/trunk/products/ERP5Form/EditorField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/EditorField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/EditorField.py (original)
+++ erp5/trunk/products/ERP5Form/EditorField.py Fri Jun 27 11:21:11 2008
@@ -72,7 +72,7 @@
                                    items=[('Standard Text Area', 'text_area'),
                                           ('FCK Editor', 'fck_editor')])
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
       Render editor
     """
@@ -87,7 +87,7 @@
                           'inputname'  : key
                         })
 
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
     """ 
       Render form in view only mode.
     """

Modified: erp5/trunk/products/ERP5Form/FormBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormBox.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormBox.py (original)
+++ erp5/trunk/products/ERP5Form/FormBox.py Fri Jun 27 11:21:11 2008
@@ -86,7 +86,7 @@
                                 default="",
                                 required=0)
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
         Render a form in a field
     """

Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Fri Jun 27 11:21:11 2008
@@ -60,7 +60,7 @@
     else:
         return '%s.%s:record' % (self.field_record, self.id)
 
-def Field_render(self, value=None, REQUEST=None, key=None):
+def Field_render(self, value=None, REQUEST=None, key=None, render_prefix=None):
     """Render the field widget.
     value -- the value the field should have (for instance
               from validation).
@@ -72,12 +72,12 @@
     """
     return self._render_helper(self.generate_field_key(key=key), value, REQUEST)
 
-def Field_render_view(self, value=None, REQUEST=None):
+def Field_render_view(self, value=None, REQUEST=None, render_prefix=None):
     """Render value to be viewed.
     """
     return self.widget.render_view(self, value, REQUEST=REQUEST)
 
-def Field_render_sub_field(self, id, value=None, REQUEST=None, key=None):
+def Field_render_sub_field(self, id, value=None, REQUEST=None, key=None, render_prefix=None):
     """Render a sub field, as part of complete rendering of widget in
     a form. Works like render() but for sub field.
         Added key parameter for ERP5 in order to be compatible with listbox/matrixbox
@@ -101,15 +101,25 @@
     return self.sub_form.get_field(id)._validate_helper(
         self.generate_subfield_key(id, validation=1, key=key), REQUEST)
 
-def Field_render_helper(self, key, value, REQUEST):
+def Field_render_helper(self, key, value, REQUEST, render_prefix=None):
     value = self._get_default(key, value, REQUEST)
     __traceback_info__ = ('key=%s value=%r' % (key, value))
     if self.get_value('hidden', REQUEST=REQUEST):
         return self.widget.render_hidden(self, key, value, REQUEST)
     elif (not self.get_value('editable', REQUEST=REQUEST)):
-        return self.widget.render_view(self, value, REQUEST=REQUEST)
+      # XXX: API transition try..except..log..raise. Remove after a while.
+      try:
+        return self.widget.render_view(self, value, REQUEST=REQUEST, render_prefix=render_prefix)
+      except TypeError:
+        LOG('FormulatorPatch', 0, 'To update: %r (%r)' % (self.widget.render_view, getattr(self.widget.render_view, 'func_code', None)))
+        raise
     else:
-        return self.widget.render(self, key, value, REQUEST)
+      # XXX: API transition try..except..log..raise. Remove after a while.
+      try:
+        return self.widget.render(self, key, value, REQUEST, render_prefix=render_prefix)
+      except TypeError:
+        LOG('FormulatorPatch', 0, 'To update: %r (%r)' % (self.widget.render, getattr(self.widget.render, 'func_code', None)))
+        raise
 
 def Field_get_user_input_value(self, key, REQUEST):
   """
@@ -289,7 +299,7 @@
 BooleanValidator.validate = BooleanValidator_validate
 
 from Products.Formulator.Widget import CheckBoxWidget
-def CheckBoxWidget_render(self, field, key, value, REQUEST):
+def CheckBoxWidget_render(self, field, key, value, REQUEST, render_prefix=None):
   """Render checkbox.
   """
   rendered = [render_element("input",
@@ -317,7 +327,7 @@
 
 CheckBoxWidget.render = CheckBoxWidget_render
 
-def CheckBoxWidget_render_view(self, field, value, REQUEST=None):
+def CheckBoxWidget_render_view(self, field, value, REQUEST=None, render_prefix=None):
   """Render checkbox in view mode.
   """
   if value:
@@ -343,7 +353,7 @@
 from urlparse import urljoin
 
 class PatchedLinkWidget(TextWidget):
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
     """Render link.
     """
     link_type = field.get_value('link_type', REQUEST=REQUEST)
@@ -363,7 +373,7 @@
 
 
 # Patch the render_view of TextField to enclose the value within <span> html tags if css class defined
-def TextWidget_patched_render_view(self, field, value, REQUEST=None):
+def TextWidget_patched_render_view(self, field, value, REQUEST=None, render_prefix=None):
   """Render text as non-editable.
      This renderer is designed to be type error resistant.
      in we get a non string value. It does escape the result
@@ -388,12 +398,23 @@
 
 from Products.Formulator.Widget import TextWidget
 TextWidget.render_view = TextWidget_patched_render_view
+
+original_TextWidget_render = TextWidget.render
+def TextWidget_render(self, field, key, value, REQUEST, render_prefix=None):
+  return original_TextWidget_render(self, field, key, value, REQUEST)
+TextWidget.render = TextWidget_render
+
 from Products.Formulator.Widget import TextAreaWidget
 # Use a standard span rendering
 TextAreaWidget.render_view = TextWidget_patched_render_view
 
+original_TextAreaWidget_render = TextAreaWidget.render
+def TextAreaWidget_render(self, field, key, value, REQUEST, render_prefix=None):
+  return original_TextAreaWidget_render(self, field, key, value, REQUEST)
+TextAreaWidget.render = TextAreaWidget_render
+
 class IntegerWidget(TextWidget) :
-  def render(self, field, key, value, REQUEST) :
+  def render(self, field, key, value, REQUEST, render_prefix=None) :
     """Render an editable integer.
     """
     if isinstance(value, float):
@@ -417,7 +438,7 @@
                               size=field.get_value('display_width'),
                               extra=field.get_value('extra'))
 
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
       """Render a non-editable interger."""
       if isinstance(value, float):
           value = int(value)
@@ -499,7 +520,7 @@
                           extra=extra)
     return result
 
-def Widget_render_view(self, field, value, REQUEST=None):
+def Widget_render_view(self, field, value, REQUEST=None, render_prefix=None):
     """Renders this widget for public viewing.
     """
     # default implementation
@@ -545,9 +566,23 @@
                     'FileWidget', 'PasswordWidget',):
   widget = getattr(WidgetModule, widget_name)
   widget._old_render_view = widget.render_view
-  widget.render_view = lambda self, field, value, REQUEST=None: \
+  widget.render_view = lambda self, field, value, REQUEST=None, render_prefix=None: \
     self._old_render_view(field, value)
-
+  widget._old_render = widget.render
+  widget.render = lambda self, field, key, value, REQUEST=None, render_prefix=None: \
+    self._old_render(field, key, value, REQUEST)
+
+from Products.Formulator.ListTextAreaField import ListTextAreaWidget
+original_ListTextAreaWidget_render = ListTextAreaWidget.render
+def ListTextAreaWidget_render(self, field, key, value, REQUEST, render_prefix=None):
+  return original_ListTextAreaWidget_render(self, field, key, value, REQUEST)
+ListTextAreaWidget.render = ListTextAreaWidget_render
+
+from Products.Formulator.MethodField import MethodWidget
+original_MethodWidget_render = MethodWidget.render
+def MethodWidget_render(self, field, key, value, REQUEST, render_prefix=None):
+  return original_MethodWidget_render(self, field, key, value, REQUEST)
+MethodWidget.render = MethodWidget_render
 
 from Products.Formulator.Validator import LinesValidator
 
@@ -612,7 +647,7 @@
 
 from Products.Formulator.Widget import SingleItemsWidget
 
-def SingleItemsWidget_render_items(self, field, key, value, REQUEST):
+def SingleItemsWidget_render_items(self, field, key, value, REQUEST, render_prefix=None):
   # get items
   cell = getattr(REQUEST, 'cell', None)
   items = field.get_value('items', REQUEST=REQUEST, cell=cell)
@@ -671,7 +706,7 @@
 
 SingleItemsWidget.render_items = SingleItemsWidget_render_items
 
-def SingleItemsWidget_render_view(self, field, value, REQUEST=None):
+def SingleItemsWidget_render_view(self, field, value, REQUEST=None, render_prefix=None):
   """
   This method is not as efficient as using a StringField in read only.
   Always consider to change the field in your Form.
@@ -690,7 +725,7 @@
 RadioWidget.render_view = SingleItemsWidget_render_view
 RadioWidget.render_pdf = SingleItemsWidget_render_view
 
-def MultiItemsWidget_render_items(self, field, key, value, REQUEST):
+def MultiItemsWidget_render_items(self, field, key, value, REQUEST, render_prefix=None):
   # list is needed, not a tuple
   if isinstance(value, tuple):
       value = list(value)
@@ -752,7 +787,7 @@
 
 from Products.Formulator.Widget import MultiListWidget
 
-def MultiListWidget_render(self, field, key, value, REQUEST):
+def MultiListWidget_render(self, field, key, value, REQUEST, render_prefix=None):
   rendered_items = self.render_items(field, key, value, REQUEST)
   input_hidden = render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0")
   multi_list = render_element(
@@ -770,7 +805,7 @@
 
 from Products.Formulator.Widget import MultiCheckBoxWidget
 
-def MultiCheckBoxWidget_render(self, field, key, value, REQUEST):
+def MultiCheckBoxWidget_render(self, field, key, value, REQUEST, render_prefix=None):
   rendered_items = self.render_items(field, key, value, REQUEST)
   rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0"))
   orientation = field.get_value('orientation')
@@ -781,7 +816,7 @@
                                                                     
 MultiCheckBoxWidget.render = MultiCheckBoxWidget_render
 
-def ListWidget_render(self, field, key, value, REQUEST):
+def ListWidget_render(self, field, key, value, REQUEST, render_prefix=None):
   rendered_items = self.render_items(field, key, value, REQUEST)
   input_hidden = render_element('input', type='hidden', 
                                 name="default_%s:int" % (key, ), value="0") 
@@ -868,7 +903,7 @@
           input_order = 'my'
       return input_order
 
-    def render_dict(self, field, value):
+    def render_dict(self, field, value, render_prefix=None):
       """
         This is yet another field rendering. It is designed to allow code to
         understand field's value data by providing its type and format when
@@ -890,7 +925,7 @@
               'format': field.get_value('date_separator').join(input_order),
               'type': 'date'}
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
         use_ampm = field.get_value('ampm_time_style')
         use_timezone = field.get_value('timezone_style')
         # FIXME: backwards compatibility hack:
@@ -1018,10 +1053,10 @@
         else:
             return date_result
     
-    def render_view(self, field, value, REQUEST=None):
+    def render_view(self, field, value, REQUEST=None, render_prefix=None):
         return self.format_value(field, value, mode='html')
     
-    def render_pdf(self, field, value):
+    def render_pdf(self, field, value, render_prefix=None):
         return self.format_value(field, value, mode='pdf')
 
 DateTimeField.widget = PatchedDateTimeWidget()
@@ -1338,7 +1373,7 @@
           return value.strip()
         return ''
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
         """Render Float input field
         """
         value = self.format_value(field, value)
@@ -1356,7 +1391,7 @@
                                 **extra_keys)
 
 
-    def render_view(self, field, value, REQUEST=None):
+    def render_view(self, field, value, REQUEST=None, render_prefix=None):
         """
           Render Float display field.
           This patch add:
@@ -1382,12 +1417,12 @@
           return "<span class='%s'>%s</span>" % (css_class, value)
         return value
 
-    def render_pdf(self, field, value):
+    def render_pdf(self, field, value, render_prefix=None):
         """Render the field as PDF."""
         return self.format_value(field, value)
 
 
-    def render_dict(self, field, value):
+    def render_dict(self, field, value, render_prefix=None):
       """
         This is yet another field rendering. It is designed to allow code to
         understand field's value data by providing its type and format when
@@ -1455,7 +1490,7 @@
   return self.render(*args, **kw)
 Field.render_html = Field_render_html
 
-def Field_render_htmlgrid(self, value=None, REQUEST=None, key=None):
+def Field_render_htmlgrid(self, value=None, REQUEST=None, key=None, render_prefix=None):
   """
   render_htmlgrid returns a list of tuple (title, html render)
   """
@@ -1463,30 +1498,40 @@
   widget_key = self.generate_field_key(key=key)
   value = self._get_default(widget_key, value, REQUEST)
   __traceback_info__ = ('key=%s value=%r' % (key, value))
-  return self.widget.render_htmlgrid(self, widget_key, value, REQUEST)
+  # XXX: API transition try..except..log..raise. Remove after a while.
+  try:
+    return self.widget.render_htmlgrid(self, widget_key, value, REQUEST, render_prefix=render_prefix)
+  except TypeError:
+    LOG('FormulatorPatch', 0, 'To update: %r (%r)' % (self.widget.render_htmlgrid, getattr(self.widget.render_htmlgrid, 'func_code', None)))
+    raise
 
 Field.render_htmlgrid = Field_render_htmlgrid
 
-def Widget_render_htmlgrid(self, field, key, value, REQUEST):
+def Widget_render_htmlgrid(self, field, key, value, REQUEST, render_prefix=None):
   """
   render_htmlgrid returns a list of tuple (title, html render)
   """
   # XXX Calling _render_helper on the field is not optimized
-  return ((field.get_value('title'), 
-           field._render_helper(key, value, REQUEST)),)
+  # XXX: API transition try..except..log..raise. Remove after a while.
+  try:
+    return ((field.get_value('title'), 
+             field._render_helper(key, value, REQUEST, render_prefix=render_prefix)),)
+  except TypeError:
+    LOG('FormulatorPatch', 0, 'To update: %r (%r)' % (field._render_helper, getattr(field._render_helper, 'func_code', None)))
+    raise
 Widget.render_htmlgrid = Widget_render_htmlgrid
 
 # Generic possible renderers
-#   def render_ext(self, field, key, value, REQUEST):
+#   def render_ext(self, field, key, value, REQUEST, render_prefix=None):
 #     return getattr(self, '%s_render' % self.__class__.__name__)
 #
-#   def render_pt(self, field, key, value, REQUEST):
+#   def render_pt(self, field, key, value, REQUEST, render_prefix=None):
 #     """
 #     Call a page template which contains 1 macro per field
 #     """
 #     return self.field_master(self.__class__.__name__)
 #
-#   def render_grid(self, field, key, value, REQUEST):
+#   def render_grid(self, field, key, value, REQUEST, render_prefix=None):
 #     return ((self.get_value('title'), self.get_value('value'),)
 #    # What about CSS ? What about description ? What about error ?
 #    # What about rendering a listbox ?
@@ -1529,7 +1574,7 @@
 
 
 from Products.Formulator.TALESField import TALESWidget
-def TALESWidget_render_view(self, field, value, REQUEST=None):
+def TALESWidget_render_view(self, field, value, REQUEST=None, render_prefix=None):
   """
   Render TALES as read only
   """
@@ -1584,15 +1629,16 @@
 from Products.Formulator.Widget import LinesTextAreaWidget
 
 original_LinesTextAreaWidget_render = LinesTextAreaWidget.render
-def LinesTextAreaWidget_render(self, field, key, value, REQUEST):
+def LinesTextAreaWidget_render(self, field, key, value, REQUEST, render_prefix=None):
   if isinstance(value, (str, unicode)):
     value = [value]
   return original_LinesTextAreaWidget_render(self, field, key, value, REQUEST)
 LinesTextAreaWidget.render = LinesTextAreaWidget_render
 
 original_LinesTextAreaWidget_render_view = LinesTextAreaWidget.render_view
-def LinesTextAreaWidget_render_view(self, field, value, REQUEST=None):
+def LinesTextAreaWidget_render_view(self, field, value, REQUEST=None, render_prefix=None):
   if isinstance(value, (str, unicode)):
     value = [value]
   return original_LinesTextAreaWidget_render_view(self, field, value)
 LinesTextAreaWidget.render_view = LinesTextAreaWidget_render_view
+

Modified: erp5/trunk/products/ERP5Form/HyperLinkField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/HyperLinkField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/HyperLinkField.py (original)
+++ erp5/trunk/products/ERP5Form/HyperLinkField.py Fri Jun 27 11:21:11 2008
@@ -14,7 +14,7 @@
                            default="",
                            required=1)
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
         return render_element("a",
                               href=field.get_value('href'),
                               css_class=field.get_value('css_class'),

Modified: erp5/trunk/products/ERP5Form/ImageField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ImageField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ImageField.py (original)
+++ erp5/trunk/products/ERP5Form/ImageField.py Fri Jun 27 11:21:11 2008
@@ -66,12 +66,12 @@
                                default=75,
                                required=0)
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
         """Render image field as a link to the image
         """
         return self.render_view(field, value, REQUEST=REQUEST)
 
-    def render_view(self, field, value, REQUEST=None):
+    def render_view(self, field, value, REQUEST=None, render_prefix=None):
         """Render image field as a link to the image
         """
         # Url is already defined in value

Modified: erp5/trunk/products/ERP5Form/InputButtonField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/InputButtonField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/InputButtonField.py (original)
+++ erp5/trunk/products/ERP5Form/InputButtonField.py Fri Jun 27 11:21:11 2008
@@ -68,7 +68,7 @@
                           default='',
                           required=0)
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
         """Render input button.
         """
         image = field.get_value('image')

Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Fri Jun 27 11:21:11 2008
@@ -355,14 +355,14 @@
                                  required=0)
     property_names.append('page_template')
 
-    def render_view(self, field, value, REQUEST=None, render_format='html', key='listbox'):
+    def render_view(self, field, value, REQUEST=None, render_format='html', key='listbox', render_prefix=None):
         """
           Render a ListBox in read-only.
         """
         if REQUEST is None: REQUEST=get_request()
         return self.render(field, key, value, REQUEST, render_format=render_format)
 
-    def render(self, field, key, value, REQUEST, render_format='html'):
+    def render(self, field, key, value, REQUEST, render_format='html', render_prefix=None):
         """
           This is where most things happen. This method renders a list
           of items
@@ -390,7 +390,7 @@
         if render_format == 'list':
           renderer = ListBoxListRenderer(self, field, REQUEST)
         else:
-          renderer = ListBoxHTMLRenderer(self, field, REQUEST)
+          renderer = ListBoxHTMLRenderer(self, field, REQUEST, render_prefix=render_prefix)
 
         return renderer()
 
@@ -417,12 +417,13 @@
   and a request object.
   """
 
-  def __init__(self, widget = None, field = None, REQUEST = None, **kw):
+  def __init__(self, widget = None, field = None, REQUEST = None, render_prefix=None, **kw):
     """Store the parameters for later use.
     """
     self.widget = widget
     self.field = field
     self.request = REQUEST
+    self.render_prefix = render_prefix
 
   def getPhysicalPath(self):
     """

Modified: erp5/trunk/products/ERP5Form/MatrixBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MatrixBox.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MatrixBox.py (original)
+++ erp5/trunk/products/ERP5Form/MatrixBox.py Fri Jun 27 11:21:11 2008
@@ -175,7 +175,7 @@
         "The cell range should be updated upon edit."),
                                   default=0)
 
-    def render(self, field, key, value, REQUEST, render_format='html'):
+    def render(self, field, key, value, REQUEST, render_format='html', render_prefix=None):
         """
           This is where most things happen. This method renders a list
           of items

Modified: erp5/trunk/products/ERP5Form/MultiLinkField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiLinkField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiLinkField.py (original)
+++ erp5/trunk/products/ERP5Form/MultiLinkField.py Fri Jun 27 11:21:11 2008
@@ -35,7 +35,7 @@
   property_names = Widget.Widget.property_names +\
                          ['items', 'view_separator', 'extra', 'extra_item']
                            
-  def render_item(self, item_text, item_value, key, css_class, extra_item) :
+  def render_item(self, item_text, item_value, key, css_class, extra_item, render_prefix=None) :
     """Render an Item."""
     return Widget.render_element('a',
                                 href=item_value,
@@ -45,7 +45,7 @@
                                 extra_item = extra_item)
   render_selected_item = render_item
   
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """Render the field."""
     rendered_items = self.render_items(field, key, value, REQUEST)
     return field.get_value('view_separator').join(rendered_items)

Modified: erp5/trunk/products/ERP5Form/MultiRelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiRelationField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiRelationField.py (original)
+++ erp5/trunk/products/ERP5Form/MultiRelationField.py Fri Jun 27 11:21:11 2008
@@ -236,7 +236,7 @@
                       value_list, None)]
     return result_list
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
     Render text input field.
     """
@@ -294,7 +294,7 @@
     REQUEST.set('_v_relation_field_index', relation_field_index + 1) 
     return html_string
 
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
     """
     Render read only field.
 
@@ -310,7 +310,7 @@
     return html_string
 
   def render_wheel(self, field, value, REQUEST, relation_index=0,
-                   sub_index=None):
+                   sub_index=None, render_prefix=None):
     """
     Render wheel used to display a listbox
     """
@@ -329,7 +329,7 @@
            (portal_url_string, portal_selections_url_string,
            relation_index, sub_index_string)
 
-  def render_relation_link(self, field, value, REQUEST):
+  def render_relation_link(self, field, value, REQUEST, render_prefix=None):
     """
     Render link to the related object.
     """

Modified: erp5/trunk/products/ERP5Form/OOoChart.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/OOoChart.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/OOoChart.py (original)
+++ erp5/trunk/products/ERP5Form/OOoChart.py Fri Jun 27 11:21:11 2008
@@ -378,7 +378,7 @@
     return extra_argument_dict
 
 
-  def render_view(self, field, value, REQUEST=None, key=None, render_format='html'):
+  def render_view(self, field, value, REQUEST=None, key=None, render_format='html', render_prefix=None):
     """
       Render a Chart in read-only.
     """
@@ -386,7 +386,7 @@
     return self.render(field, key, value, REQUEST, render_format=render_format)
 
 
-  def render_odf(self, field, key, value, REQUEST, render_format='ooo'):
+  def render_odf(self, field, key, value, REQUEST, render_format='ooo', render_prefix=None):
     """
       Render a Chart for ODT Style.
     """
@@ -399,7 +399,7 @@
     return content
 
 
-  def render(self, field, key, value, REQUEST, render_format='html'):
+  def render(self, field, key, value, REQUEST, render_format='html', render_prefix=None):
 
     """
       Render a chart.

Modified: erp5/trunk/products/ERP5Form/POSBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/POSBox.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/POSBox.py (original)
+++ erp5/trunk/products/ERP5Form/POSBox.py Fri Jun 27 11:21:11 2008
@@ -220,7 +220,7 @@
                                 required=0,
                                 group="order summary")
  
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
       Render point of sales widget.
     """
@@ -242,7 +242,7 @@
         fastResourceEntry_display = field.get_value("display_fastResourceEntry"),
         )
 
-  def render_javascript(self, field, key, value, REQUEST):
+  def render_javascript(self, field, key, value, REQUEST, render_prefix=None):
     here = REQUEST['here']
     page_template = getattr(here,field.get_value("javascript_ZPT"))
 
@@ -259,7 +259,7 @@
         resource_category_fastResourceEntry = field.get_value('resource_category_fastResourceEntry')
         ) 
 
-  def render_view(self, field, value, REQUEST=None):
+  def render_view(self, field, value, REQUEST=None, render_prefix=None):
     """ 
       Render point of sales widget
     """
@@ -286,6 +286,6 @@
   def render_css(self, value=None, REQUEST=None):
     return self.widget.render_css(self,'',value,REQUEST)
 
-  def render_javascript(self, value=None, REQUEST=None):
+  def render_javascript(self, value=None, REQUEST=None, render_prefix=None):
     return self.widget.render_javascript(self,'',value,REQUEST)
 

Modified: erp5/trunk/products/ERP5Form/ParallelListField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ParallelListField.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ParallelListField.py (original)
+++ erp5/trunk/products/ERP5Form/ParallelListField.py Fri Jun 27 11:21:11 2008
@@ -97,7 +97,7 @@
         'MultiListField': Widget.MultiListWidgetInstance,
       }
 
-    def render(self, field, key, value, REQUEST):
+    def render(self, field, key, value, REQUEST, render_prefix=None):
       hash_list = generateSubForm(field, value, REQUEST)
       # Call render on each sub field
       sub_field_render_list = []
@@ -111,7 +111,7 @@
                                 join(sub_field_render_list)
       return html_string
 
-    def render_htmlgrid(self, field, key, value, REQUEST):
+    def render_htmlgrid(self, field, key, value, REQUEST, render_prefix=None):
       hash_list = generateSubForm(field, value, REQUEST)
       # Call render on each sub field
       sub_field_render_list = []
@@ -125,7 +125,7 @@
       return sub_field_render_list
 
     def render_sub_field(self, field, key, value, REQUEST,
-                        sub_field_property_dict):
+                        sub_field_property_dict, render_prefix=None):
       """
       Render dynamically a subfield
       """

Modified: erp5/trunk/products/ERP5Form/PlanningBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PlanningBox.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PlanningBox.py (original)
+++ erp5/trunk/products/ERP5Form/PlanningBox.py Fri Jun 27 11:21:11 2008
@@ -940,7 +940,7 @@
 
     return CSS_data
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
     Method called to render the HTML code relative to the planning.
     for that recover the structure previouly saved in the REQUEST, and then
@@ -961,7 +961,7 @@
     # return HTML data
     return HTML_data
 
-  def render_structure(self, field, REQUEST, context):
+  def render_structure(self, field, REQUEST, context, render_prefix=None):
     """
     This method is the begining of the rendering procedure. it calls all
     methods needed to generate BasicStructure with ERP5 objects, and then

Modified: erp5/trunk/products/ERP5Form/ZGDChart.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ZGDChart.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ZGDChart.py (original)
+++ erp5/trunk/products/ERP5Form/ZGDChart.py Fri Jun 27 11:21:11 2008
@@ -102,7 +102,7 @@
                               default='',
                               required=0)
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
 
     """
     This is where most things happens

Modified: erp5/trunk/products/ERP5Form/ZPyChart.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ZPyChart.py?rev=21998&r1=21997&r2=21998&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ZPyChart.py (original)
+++ erp5/trunk/products/ERP5Form/ZPyChart.py Fri Jun 27 11:21:11 2008
@@ -94,7 +94,7 @@
                               default='',
                               required=0)
 
-  def render(self, field, key, value, REQUEST):
+  def render(self, field, key, value, REQUEST, render_prefix=None):
     """
       Here, we just generate tags which will later call download
     """




More information about the Erp5-report mailing list