[Erp5-report] r35695 rafael - /erp5/trunk/products/ERP5Type/Base.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri May 28 03:13:18 CEST 2010
Author: rafael
Date: Fri May 28 03:13:16 2010
New Revision: 35695
URL: http://svn.erp5.org?rev=35695&view=rev
Log:
Re-apply http://svn.erp5.org/?view=revision&revision=33677 But now using aq_inner instead aq_base (Thanks Julien M.)
this will prevent authorization problems due acquisition.
Modified:
erp5/trunk/products/ERP5Type/Base.py
Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=35695&r1=35694&r2=35695&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Base.py [utf8] Fri May 28 03:13:16 2010
@@ -3083,16 +3083,6 @@
fallback_script_id : the script to use if nothing is found
"""
- def getScriptName(portal_type, method_id):
- from Products.ERP5Type.Base import Base
- class_name_list = [base_class.__name__ for base_class in self.__class__.mro() if issubclass(base_class, Base)]
- script_name_end = '_%s' % method_id
- for script_name_begin in [portal_type, self.getMetaType()] + class_name_list:
- name = ''.join([script_name_begin.replace(' ',''), script_name_end])
- script = getattr(self, name, None)
- if script is not None:
- return name
-
# script_id should not be used any more, keep compatibility
if script_id is not None:
LOG('ERP5Type/Base.getTypeBaseMethod',0,
@@ -3107,12 +3097,22 @@
cache_key = (portal_type, method_id)
try:
- name = type_base_cache[cache_key]
+ script = type_base_cache[cache_key]
except KeyError:
- name = getScriptName(portal_type, method_id)
- type_base_cache[cache_key] = name
- if name is not None:
- return getattr(self, name)
+ class_name_list = [portal_type, self.getMetaType()] + \
+ [base_class.__name__ for base_class in self.__class__.mro()
+ if issubclass(base_class, Base)]
+ script_name_end = '_' + method_id
+ for script_name_begin in class_name_list:
+ script_id = script_name_begin.replace(' ','') + script_name_end
+ script = getattr(self, script_id, None)
+ if script is not None:
+ type_base_cache[cache_key] = aq_inner(script)
+ return script
+ type_base_cache[cache_key] = None
+
+ if script is not None:
+ return script.__of__(self)
if fallback_script_id is not None:
return getattr(self, fallback_script_id)
More information about the Erp5-report
mailing list