[Erp5-report] r21505 - /erp5/trunk/products/ERP5Type/Utils.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jun 11 17:15:21 CEST 2008


Author: nicolas
Date: Wed Jun 11 17:15:14 2008
New Revision: 21505

URL: http://svn.erp5.org?rev=21505&view=rev
Log:
Filter category Accessors generation if base_category is missing

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

Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=21505&r1=21504&r2=21505&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py (original)
+++ erp5/trunk/products/ERP5Type/Utils.py Wed Jun 11 17:15:14 2008
@@ -50,6 +50,7 @@
 from Products.ERP5Type import Permissions
 from Products.ERP5Type import Constraint
 
+from Products.ERP5Type.Cache import getReadOnlyTransactionCache
 from zLOG import LOG, BLATHER, PROBLEM
 
 
@@ -1057,6 +1058,26 @@
       }
   return getEngine().getContext(data)
 
+def getExistingBaseCategoryList(portal, base_cat_list):
+  cache = getReadOnlyTransactionCache(portal)
+  if cache is None:
+    from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
+    cache = getTransactionalVariable(portal)
+  category_tool = portal.portal_categories
+  new_base_cat_list = []
+  for base_cat in base_cat_list:
+    key = (base_cat,)
+    try:
+      value = cache[key]
+    except KeyError:
+      value = category_tool._getOb(base_cat, None)
+      if value is None:
+        LOG('ERP5Type.Utils.getExistingBaseCategoryList', PROBLEM, 'base_category "%s" is missing, can not generate Accessors' % (base_cat))
+      cache[key] = value
+    if value is not None:
+      new_base_cat_list.append(base_cat)
+  return tuple(new_base_cat_list)
+
 def setDefaultProperties(property_holder, object=None, portal=None):
     """
       This methods sets default accessors for this object as well
@@ -1121,7 +1142,7 @@
           new_cat_list.append(result)
       else:
         new_cat_list.append(cat)
-    cat_list = new_cat_list
+    cat_list = getExistingBaseCategoryList(portal, new_cat_list)
 
     for const in constraint_list:
       for key,value in const.items():




More information about the Erp5-report mailing list