diff --git a/product/ERP5Type/Core/Predicate.py b/product/ERP5Type/Core/Predicate.py index 452c7717459d97b5833a450214dbfe447008f1be..5c7fb93aa44e0c61c594867a1553d4412d2dc83b 100644 --- a/product/ERP5Type/Core/Predicate.py +++ b/product/ERP5Type/Core/Predicate.py @@ -585,21 +585,18 @@ class Predicate(XMLObject): def asPredicate(self, script_id=None): """ This method tries to convert the current Document into a predicate - looking up methods named Class_asPredictae, MetaType_asPredicate, PortalType_asPredicate + looking up methods named Class_asPredicate, MetaType_asPredicate, PortalType_asPredicate """ cache = getTransactionalVariable() - key = id(self), script_id - if 'asPredicate' in cache: - cache = cache['asPredicate'] - if key in cache: - return cache[key] - else: - cache = cache['asPredicate'] = {} - script = self._getTypeBasedMethod('asPredicate', script_id) - if script is not None: - self = script() - cache[key] = self - return self + key = 'asPredicate', self, script_id + try: + return cache[key] + except KeyError: + script = self._getTypeBasedMethod('asPredicate', script_id) + if script is not None: + self = script() + cache[key] = self + return self def searchPredicate(self, **kw): """