[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