From 2bd9af2bf04ecdff84c613269ec960e5b46a5c5e Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Tue, 9 Jul 2013 18:00:54 +0900 Subject: [PATCH] ZODB Components: Developer Role was not returned by getRoles() for users added through erp5.acl_users. It was only working if the user was only in Zope acl_users but not ERP5 acl_users because getRole() was not monkey-patch in contrary to AccessControl BasicUser. TODO: Add unit test before merge. --- product/ERP5Type/patches/PropertiedUser.py | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/product/ERP5Type/patches/PropertiedUser.py b/product/ERP5Type/patches/PropertiedUser.py index 5a09a752b0..54be6953a9 100644 --- a/product/ERP5Type/patches/PropertiedUser.py +++ b/product/ERP5Type/patches/PropertiedUser.py @@ -90,6 +90,28 @@ def getRolesInContext( self, object ): from App.config import getConfiguration +def getRoles( self ): + """ -> [ role ] + + o Include only "global" roles. + """ + role_tuple = self._roles.keys() + if role_tuple: + product_config = getattr(getConfiguration(), 'product_config', None) + if product_config: + config = product_config.get('erp5') + if config: + role_set = set(role_tuple) + user_id = self.getId() + if config and user_id in config.developer_list: + role_set.add('Developer') + elif user_id in role_set: + role_set.remove('Developer') + + return role_set + + return role_tuple + def allowed(self, object, object_roles=None ): """ Check whether the user has access to object. @@ -205,3 +227,4 @@ def allowed(self, object, object_roles=None ): if PropertiedUser is not None: PropertiedUser.getRolesInContext = getRolesInContext PropertiedUser.allowed = allowed + PropertiedUser.getRoles = getRoles -- 2.30.9