[Erp5-report] r8613 - /erp5/trunk/products/ERP5Type/Base.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 19 20:41:30 CEST 2006


Author: yo
Date: Wed Jul 19 20:41:26 2006
New Revision: 8613

URL: http://svn.erp5.org?rev=8613&view=rev
Log:
Evaluate expressions for _categories when generating accessors for Base.

Modified:
    erp5/trunk/products/ERP5Type/Base.py

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=8613&r1=8612&r2=8613&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Wed Jul 19 20:41:26 2006
@@ -457,9 +457,20 @@
       generated = 1
       portal_types = getToolByName(self, 'portal_types', None)
       generated_bid = {}
+      econtext = createExpressionContext(self.getPortalObject())
       for pid, ps in PropertySheet.__dict__.items():
         if pid[0] != '_':
-          for bid in getattr(ps, '_categories', ()):
+          base_category_list = []
+          for cat in getattr(ps, '_categories', ()):
+            if isinstance(cat, Expression):
+              result = cat(econtext)
+              if isinstance(result, (list, tuple)):
+                base_category_list.extend(result)
+              else:
+                base_category_list.append(result)
+            else:
+              base_category_list.append(cat)
+          for bid in base_category_list:
             if bid not in generated_bid:
               #LOG( "Create createRelatedValueAccessors %s" % bid,0,'')
               createRelatedValueAccessors(Base, bid)




More information about the Erp5-report mailing list