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

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Apr 18 02:19:50 CEST 2008


Author: jp
Date: Fri Apr 18 02:19:50 2008
New Revision: 20637

URL: http://svn.erp5.org?rev=20637&view=rev
Log:
Only use getObject if needed.

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=20637&r1=20636&r2=20637&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Fri Apr 18 02:19:50 2008
@@ -1925,7 +1925,7 @@
             processed_value = original_value
       else:
         # This is an usual line.
-        obj = self.getObject()
+        obj = None # Only evaluate if needed
         brain = self.getBrain()
 
         # Use a widget, if any.
@@ -1934,37 +1934,40 @@
         if editable_field is not None:
           tales = editable_field.tales.get('default', '')
           if tales:
+            if obj is None: obj = self.getObject()
             original_value = editable_field.__of__(obj).get_value('default',
                                                         cell=brain)
             processed_value = original_value
 
         # If a tales expression is not defined, get a skin, an accessor or a property.
         if not tales:
-          if brain is not obj and getattr(aq_self(brain), alias, None) is not None:
+          if (obj is None or brain is not obj) and getattr(aq_self(brain), alias, None) is not None:
             original_value = getattr(brain, alias)
             processed_value = original_value
-          elif obj is not None:
-            try:
-              # Get the trailing part.
+          else:
+            obj = self.getObject()
+            if obj is not None:
               try:
-                property_id = sql[sql.rindex('.') + 1:]
-              except ValueError:
-                property_id = sql
-
-              try:
-                original_value = obj.getProperty(property_id, _marker)
-                if original_value is _marker:
-                  raise AttributeError, property_id
-                processed_value = original_value
-              except AttributeError:
-                original_value = getattr(obj, property_id, None)
-                processed_value = original_value
-            except (AttributeError, KeyError, Unauthorized):
+                # Get the trailing part.
+                try:
+                  property_id = sql[sql.rindex('.') + 1:]
+                except ValueError:
+                  property_id = sql
+  
+                try:
+                  original_value = obj.getProperty(property_id, _marker)
+                  if original_value is _marker:
+                    raise AttributeError, property_id
+                  processed_value = original_value
+                except AttributeError:
+                  original_value = getattr(obj, property_id, None)
+                  processed_value = original_value
+              except (AttributeError, KeyError, Unauthorized):
+                original_value = None
+                processed_value = 'Could not evaluate %s' % property_id
+            else:
               original_value = None
-              processed_value = 'Could not evaluate %s' % property_id
-          else:
-            original_value = None
-            processed_value = 'Object does not exist'
+              processed_value = 'Object does not exist'
 
       # If the value is callable, evaluate it.
       if callable(original_value):




More information about the Erp5-report mailing list