[Erp5-report] r38106 jerome - /erp5/trunk/products/ERP5Form/ListBox.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Sep 1 14:30:35 CEST 2010


Author: jerome
Date: Wed Sep  1 14:30:19 2010
New Revision: 38106

URL: http://svn.erp5.org?rev=38106&view=rev
Log:
also use getEditableField method during validation.
This method is looking for editable fields in field library forms, it's not
limited to the form containing listbox, it was already used for display but not
for validation, so this was partially working.

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

Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=38106&r1=38105&r2=38106&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py [utf8] Wed Sep  1 14:30:19 2010
@@ -2720,6 +2720,12 @@ class ListBoxValidator(Validator.Validat
         editable_columns = field.get_value('editable_columns')
         column_ids = [x[0] for x in columns]
         editable_column_ids = [x[0] for x in editable_columns]
+        editable_field_dict = dict()
+        for sql in editable_column_ids:
+          alias = sql.replace('.', '_')
+          editable_field_dict[alias] = ListBoxRenderer(
+                                          field=field).getEditableField(alias)
+          
         selection_name = field.get_value('selection_name')
         #LOG('ListBoxValidator', 0, 'field = %s, selection_name = %s' % (repr(field), repr(selection_name)))
         params = here.portal_selections.getSelectionParamsFor(
@@ -2770,14 +2776,13 @@ class ListBoxValidator(Validator.Validat
                 property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
               else:
                 property_id = alias
-              my_field_id = '%s_%s' % (field.id, alias)
-              if form.has_field( my_field_id ):
-                my_field = form.get_field(my_field_id)
-                error_result_key = '%s_%s' % (my_field.id, o.uid)
+              editable_field = editable_field_dict.get(alias)
+              if editable_field is not None:
+                error_result_key = '%s_%s' % (editable_field.id, o.uid)
                 key = 'field_' + error_result_key
                 REQUEST.set('cell', o)
                 try:
-                  value = my_field._validate_helper(key, REQUEST) # We need cell
+                  value = editable_field._validate_helper(key, REQUEST) # We need cell
                   # Here we set the property
                   listbox[uid[4:]][sql] = value
                 except ValidationError, err:
@@ -2811,15 +2816,15 @@ class ListBoxValidator(Validator.Validat
                 property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
               else:
                 property_id = alias
-              my_field_id = '%s_%s' % (field.id, alias)
-              if form.has_field( my_field_id ):
-                my_field = form.get_field(my_field_id)
+              editable_field = editable_field_dict.get(alias)
+              if editable_field is not None:
                 REQUEST.set('cell', o)
-                if my_field.get_value('editable', REQUEST=REQUEST) and field.need_validate(REQUEST):
-                  error_result_key = '%s_%s' % (my_field.id, o.uid)
+                if editable_field.get_value('editable', REQUEST=REQUEST) \
+                                              and field.need_validate(REQUEST):
+                  error_result_key = '%s_%s' % (editable_field.id, o.uid)
                   key = 'field_' + error_result_key
                   try:
-                    value = my_field._validate_helper(key, REQUEST) # We need cell
+                    value = editable_field._validate_helper(key, REQUEST) # We need cell
                     result[uid[4:]][sql] = value
                   except ValidationError, err:
                     #LOG("ListBox ValidationError",0,str(err))
@@ -2861,21 +2866,20 @@ class ListBoxValidator(Validator.Validat
                   property_id = '.'.join(sql.split('.')[1:]) # Only take trailing part
                 else:
                   property_id = alias
-                my_field_id = '%s_%s' % (field.id, alias)
-                if form.has_field( my_field_id ):
-                  my_field = form.get_field(my_field_id)
+                editable_field = editable_field_dict.get(alias)
+                if editable_field is not None:
                   REQUEST.set('cell', o) # We need cell
-                  if my_field.get_value('editable', REQUEST=REQUEST) and field.need_validate(REQUEST):
-                    error_result_key = '%s_%s' % (my_field.id, o.uid)
+                  if editable_field.get_value('editable', REQUEST=REQUEST) \
+                                              and field.need_validate(REQUEST):
+                    error_result_key = '%s_%s' % (editable_field.id, o.uid)
                     key = 'field_' + error_result_key
                     try:
-                      value = my_field._validate_helper(key, REQUEST) # We need cell
+                      value = editable_field._validate_helper(key, REQUEST)
                       error_result[error_result_key] = value
                       if not result.has_key(o.getUrl()):
                         result[o.getUrl()] = {}
                       result[o.getUrl()][sql] = value
                     except ValidationError, err:
-                      #LOG("ListBox ValidationError",0,str(err))
                       err.field_id = error_result_key
                       errors.append(err)
                     except KeyError:




More information about the Erp5-report mailing list