[Erp5-report] r14864 - in /erp5/trunk/products/ERP5Form: Form.py ProxyField.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jun 18 19:55:11 CEST 2007


Author: romain
Date: Mon Jun 18 19:55:11 2007
New Revision: 14864

URL: http://svn.erp5.org?rev=14864&view=rev
Log:
Fix default value of proxy field.
If an accessor is called, it has to be based on the proxy field id, and not on
his template field.

Modified:
    erp5/trunk/products/ERP5Form/Form.py
    erp5/trunk/products/ERP5Form/ProxyField.py

Modified: erp5/trunk/products/ERP5Form/Form.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Form.py?rev=14864&r1=14863&r2=14864&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/Form.py (original)
+++ erp5/trunk/products/ERP5Form/Form.py Mon Jun 18 19:55:11 2007
@@ -116,11 +116,17 @@
 
             # For the 'default' value, we try to get a property value
             # stored in the context, only if the field is prefixed with my_.
-            if id == 'default' and self.id[:3] == 'my_':
+            REQUEST = get_request()
+            if REQUEST is not None:
+              field_id = REQUEST.get('%s_%s_id' % (self.id, id), self.id)
+            else:
+              field_id = self.id
+
+            if id == 'default' and field_id.startswith('my_'):
               try:
                 form = self.aq_parent
                 ob = getattr(form, 'aq_parent', None)
-                key = self.id[3:]
+                key = field_id[3:]
                 if value not in (None, ''):
                   # If a default value is defined on the field, it has precedence
                   value = ob.getProperty(key, d=value)

Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=14864&r1=14863&r2=14864&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Mon Jun 18 19:55:11 2007
@@ -123,7 +123,7 @@
   property_names = []
 
   def validate(self, field, key, REQUEST):
-    proxy_field = field.getTemplateField()
+    proxy_field = field.getRecursiveTemplateField()
     try:
       result = proxy_field.validator.validate(field, key, REQUEST)
     except ValidationError, error:
@@ -456,6 +456,9 @@
     else:
       proxy_field = self.getTemplateField()
       if proxy_field is not None:
+        REQUEST = get_request()
+        REQUEST.set('%s_%s_id' % (proxy_field.id, id), 
+                    REQUEST.get('%s_%s_id' % (self.id, id), self.id))
         result = proxy_field.get_value(id, **kw)
     return result
 




More information about the Erp5-report mailing list