diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testPreferences.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testPreferences.py index c9ed3d0401c7bb3e75c29bd1adf3588ed8819938..b370773c32b245eed4fafb0e0ba6db0e7d08ecc8 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testPreferences.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testPreferences.py @@ -651,6 +651,7 @@ class TestPreferences(PropertySheetTestCase): preference_tool.manage_permission(read_permission, [], 0) obj.manage_permission(read_permission, [], 0) self.assertFalse(guarded_hasattr(preference_tool, 'getPreferredToto')) + self.assertEqual(preference_tool.getPreference('toto'), None) preference_tool.manage_permission(read_permission, ['Manager'], 1) diff --git a/product/ERP5Form/PreferenceTool.py b/product/ERP5Form/PreferenceTool.py index a3c75a72b22717dd9a4c4399c5285e0ad32802e0..b3ff4ecdcf632812b84063a55bb5f60afd08f548 100644 --- a/product/ERP5Form/PreferenceTool.py +++ b/product/ERP5Form/PreferenceTool.py @@ -30,6 +30,7 @@ from AccessControl import ClassSecurityInfo from AccessControl.SecurityManagement import getSecurityManager,\ setSecurityManager, newSecurityManager +from AccessControl.ZopeGuards import guarded_getattr from MethodObject import Method from Products.ERP5Type.Globals import InitializeClass, DTMLFile from zLOG import LOG, PROBLEM @@ -128,8 +129,8 @@ class PreferenceTool(BaseTool): security.declarePublic('getPreference') def getPreference(self, pref_name, default=_marker) : - """ get the preference on the most appopriate Preference object. """ - method = getattr(self, 'get%s' % convertToUpperCase(pref_name), None) + """ get the preference on the most appropriate Preference object. """ + method = guarded_getattr(self, 'get%s' % convertToUpperCase(pref_name), None) if method is not None: return method(default) if default is _marker: