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

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Dec 5 15:52:36 CET 2006


Author: romain
Date: Tue Dec  5 15:52:31 2006
New Revision: 11611

URL: http://svn.erp5.org?rev=11611&view=rev
Log:
ParallelListField are now compatible with the ProxyField, and can be surcharged.

Modified:
    erp5/trunk/products/ERP5Form/FormulatorPatch.py
    erp5/trunk/products/ERP5Form/ParallelListField.py
    erp5/trunk/products/ERP5Form/ProxyField.py

Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Tue Dec  5 15:52:31 2006
@@ -1107,9 +1107,20 @@
   render_htmlgrid returns a list of tuple (title, html render)
   """
   # What about CSS ? What about description ? What about error ?
-  return ((self.get_value('title'),
-          self.render_html(value=value, REQUEST=REQUEST, key=key)),)
+  widget_key = self.generate_field_key(key=key)
+  value = self._get_default(key, value, REQUEST)
+  __traceback_info__ = ('key=%s value=%r' % (key, value))
+  return self.widget.render_htmlgrid(self, widget_key, value, REQUEST)
 Field.render_htmlgrid = Field_render_htmlgrid
+
+def Widget_render_htmlgrid(self, field, key, value, REQUEST):
+  """
+  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)),)
+Widget.render_htmlgrid = Widget_render_htmlgrid
 
 # Generic possible renderers
 #   def render_ext(self, field, key, value, REQUEST):

Modified: erp5/trunk/products/ERP5Form/ParallelListField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ParallelListField.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ParallelListField.py (original)
+++ erp5/trunk/products/ERP5Form/ParallelListField.py Tue Dec  5 15:52:31 2006
@@ -94,7 +94,7 @@
       }
 
     def render(self, field, key, value, REQUEST):
-      hash_list = field._generateSubForm(value, REQUEST)
+      hash_list = generateSubForm(field, value, REQUEST)
       # Call render on each sub field
       sub_field_render_list = []
       for sub_field_property_dict in hash_list:
@@ -108,7 +108,7 @@
       return html_string
 
     def render_htmlgrid(self, field, key, value, REQUEST):
-      hash_list = field._generateSubForm(value, REQUEST)
+      hash_list = generateSubForm(field, value, REQUEST)
       # Call render on each sub field
       sub_field_render_list = []
       for sub_field_property_dict in hash_list:
@@ -160,7 +160,7 @@
   def validate(self, field, key, REQUEST):    
 
     result_list = []
-    hash_list = field._generateSubForm(None, REQUEST)
+    hash_list = generateSubForm(field, value, REQUEST)
     is_sub_field_required = 0
     for sub_field_property_dict in hash_list:
       try:
@@ -220,50 +220,6 @@
     html = self.widget.render_htmlgrid(self, key, value, REQUEST)
     return html
 
-  def _generateSubForm(self, value, REQUEST):
-    item_list = [x for x in self.get_value('items') \
-                 if x not in (('',''), ['',''])]
-
-    value_list = value
-    if not isinstance(value_list, (list, tuple)):
-      value_list = [value_list]
-
-    empty_sub_field_property_dict = {
-      'key': 'default',
-      'title': self.get_value('title'),
-      'required': 0,
-      'field_type': 'MultiListField',
-      'item_list': [],
-      'value': [],
-      'is_right_display': 0,
-      'size': 5,
-      'editable' : self.get_value('editable')
-    }
-
-    hash_list = []
-    hash_script_id = self.get_value('hash_script_id')
-    if hash_script_id not in [None, '']:
-      script = getattr(self, hash_script_id)
-      script_hash_list = script(
-              item_list,
-              value_list,
-              default_sub_field_property_dict=empty_sub_field_property_dict,
-              is_right_display=0)
-      hash_list.extend(script_hash_list)
-    else:
-      # No hash_script founded, generate a little hash_script 
-      # to display only a MultiListField
-      default_sub_field_property_dict = empty_sub_field_property_dict.copy()
-      default_sub_field_property_dict.update({
-          'item_list': item_list,
-          'value': value_list,
-      })
-      hash_list.append(default_sub_field_property_dict)
-    # XXX Clean up old ParallelListField
-    if hasattr(self, 'sub_form'):
-       delattr(self, 'sub_form')
-    return hash_list
-
   security.declareProtected('Access contents information', 'get_value')
   def get_value(self, id, **kw):
     """
@@ -279,3 +235,47 @@
     else:
       result = ZMIField.get_value(self, id, **kw)
     return result
+
+def generateSubForm(self, value, REQUEST):
+  item_list = [x for x in self.get_value('items') \
+               if x not in (('',''), ['',''])]
+
+  value_list = value
+  if not isinstance(value_list, (list, tuple)):
+    value_list = [value_list]
+
+  empty_sub_field_property_dict = {
+    'key': 'default',
+    'title': self.get_value('title'),
+    'required': 0,
+    'field_type': 'MultiListField',
+    'item_list': [],
+    'value': [],
+    'is_right_display': 0,
+    'size': 5,
+    'editable' : self.get_value('editable')
+  }
+
+  hash_list = []
+  hash_script_id = self.get_value('hash_script_id')
+  if hash_script_id not in [None, '']:
+    script = getattr(self, hash_script_id)
+    script_hash_list = script(
+            item_list,
+            value_list,
+            default_sub_field_property_dict=empty_sub_field_property_dict,
+            is_right_display=0)
+    hash_list.extend(script_hash_list)
+  else:
+    # No hash_script founded, generate a little hash_script 
+    # to display only a MultiListField
+    default_sub_field_property_dict = empty_sub_field_property_dict.copy()
+    default_sub_field_property_dict.update({
+        'item_list': item_list,
+        'value': value_list,
+    })
+    hash_list.append(default_sub_field_property_dict)
+  # XXX Clean up old ParallelListField
+  if hasattr(self, 'sub_form'):
+     delattr(self, 'sub_form')
+  return hash_list

Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Tue Dec  5 15:52:31 2006
@@ -105,6 +105,17 @@
     if proxy_field is not None:
       REQUEST = field.updateContext(REQUEST)
       result = proxy_field.widget.render(field, key, value, REQUEST)
+    return result
+
+  def render_htmlgrid(self, field, key, value, REQUEST):
+    """
+    Render proxy field
+    """
+    result = ''
+    proxy_field = field.getRecursiveTemplateField()
+    if proxy_field is not None:
+      REQUEST = field.updateContext(REQUEST)
+      result = proxy_field.widget.render_htmlgrid(field, key, value, REQUEST)
     return result
 
   def render_view(self, field, value):
@@ -479,7 +490,3 @@
       if proxy_field is not None:
         result = proxy_field.has_value(id)
     return result
-
-  def _generateSubForm(self, value, REQUEST):
-    proxy_field = self.getTemplateField()
-    return proxy_field._generateSubForm(value, REQUEST)




More information about the Erp5-report mailing list