[Erp5-report] r9332 - /erp5/trunk/products/ERP5Form/FormulatorPatch.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Aug 22 18:34:22 CEST 2006


Author: vincent
Date: Tue Aug 22 18:34:20 2006
New Revision: 9332

URL: http://svn.erp5.org?rev=9332&view=rev
Log:
Fix MultiListField and MultiCheckBoxField : "nothing is selected" state will be saved (distinguished from "not rendered" state).

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

Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=9332&r1=9331&r2=9332&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Tue Aug 22 18:34:20 2006
@@ -180,12 +180,10 @@
 from Products.Formulator.Validator import MultiSelectionValidator
 
 def MultiSelectionValidator_validate(self, field, key, REQUEST):
-    values = REQUEST.get(key)
-    if values is None:
-        if field.get_value('required'):
-          raise Exception, 'Required field %s has not been transmitted. Check that all required fields are in visible groups.' % (repr(field.id), )
-        else:
-          raise KeyError, 'Field %s is not present in request object.' % (repr(field.id), )
+    if REQUEST.get('default_%s' % (key, )) is None:
+      LOG('MultiSelectionValidator_validate', 0, 'Field %s is not present in request object (marker field default_%s not found).' % (repr(field.id), key))
+      raise KeyError, 'Field %s is not present in request object (marker field default_%s not found).' % (repr(field.id), key)
+    values = REQUEST.get(key, [])
     # NOTE: a hack to deal with single item selections
     if type(values) is not type([]):
         # put whatever we got in a list
@@ -576,7 +574,7 @@
   # XXX -yo
   selected_found = {}
 
-  items = field.get_value('items',REQUEST=REQUEST, cell=getattr(REQUEST,'cell',None)) # The only thing changes, added request
+  items = field.get_value('items',REQUEST=REQUEST, cell=getattr(REQUEST,'cell',None)) # Added request
   css_class = field.get_value('css_class')
   extra_item = field.get_value('extra_item')
   rendered_items = []
@@ -615,6 +613,8 @@
                                                 css_class,
                                                 extra_item)
       rendered_items.append(rendered_item)
+
+  rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0")) # Added marker field
 
   return rendered_items
 




More information about the Erp5-report mailing list