[Erp5-report] r43910 arnaud.fontaine - /erp5/trunk/products/ERP5Type/dynamic/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 2 17:54:35 CET 2011
Author: arnaud.fontaine
Date: Wed Mar 2 17:54:35 2011
New Revision: 43910
URL: http://svn.erp5.org?rev=43910&view=rev
Log:
expression_context must not be a global variable but a transactional
variable, otherwise it is kept for further transactions, thus leading
to ZODB ConnectionStateError.
Modified:
erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py
Modified: erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py?rev=43910&r1=43909&r2=43910&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py [utf8] Wed Mar 2 17:54:35 2011
@@ -38,6 +38,7 @@ from types import ModuleType
from Products.ERP5Type import Permissions
from Products.ERP5Type.Utils import createExpressionContext
from Products.ERP5Type.Globals import InitializeClass
+from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
from Products.ERP5Type.Utils import UpperCase
from Products.ERP5Type.Accessor import Related, RelatedValue
@@ -298,13 +299,11 @@ def getPropertySheetValueList(site, prop
return property_sheet_value_list
-expression_context = None
-
def getAccessorHolderList(site, portal_type_name, property_sheet_value_list):
import erp5.accessor_holder
- global expression_context
accessor_holder_list = []
+ tv = getTransactionalVariable()
for property_sheet in property_sheet_value_list:
# LOG("ERP5Type.dynamic", INFO,
@@ -323,8 +322,11 @@ def getAccessorHolderList(site, portal_t
property_sheet_name))
except AttributeError:
# lazily create the context, only if needed.
- if expression_context is None:
+ try:
+ expression_context = tv['accessor_holder_expression_context']
+ except KeyError:
expression_context = createExpressionContext(site)
+ tv['accessor_holder_expression_context'] = expression_context
# Generate the accessor holder as it has not been done yet
accessor_holder_class = property_sheet.createAccessorHolder(
More information about the Erp5-report
mailing list