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

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Oct 16 16:33:12 CEST 2009


Author: kazuhiko
Date: Fri Oct 16 16:33:11 2009
New Revision: 29771

URL: http://svn.erp5.org?rev=29771&view=rev
Log:
use transactional cache for createExpressionContext value just same as Expression.getExprContext does.

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=29771&r1=29770&r2=29771&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Utils.py [utf8] Fri Oct 16 16:33:11 2009
@@ -60,6 +60,7 @@
 from Products.ERP5Type import Constraint
 
 from Products.ERP5Type.Cache import getReadOnlyTransactionCache
+from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
 from zLOG import LOG, BLATHER, PROBLEM, WARNING
 
 from AccessControl.SecurityManagement import newSecurityManager, getSecurityManager
@@ -1134,6 +1135,12 @@
   """
     Return a context used for evaluating a TALES expression.
   """
+  tv = getTransactionalVariable(None)
+  cache_key = ('createExpressionContext', id(object))
+  try:
+    return tv[cache_key]
+  except KeyError:
+    pass
   if portal is None and object is not None:
     portal = object.getPortalObject()
 
@@ -1187,7 +1194,9 @@
       'member':       member,
       'here':         object,
       }
-  return getEngine().getContext(data)
+  ec = getEngine().getContext(data)
+  tv[cache_key] = ec
+  return ec
 
 def getExistingBaseCategoryList(portal, base_cat_list):
   cache = getReadOnlyTransactionCache(portal)




More information about the Erp5-report mailing list