diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index c706f7c85b6b3ae1b7bc384ae59e7e48502951cd..8356a547cf7991bf9de829703bbe5e417501943e 100755 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -1650,13 +1650,23 @@ class RoleTemplateItem(BaseTemplateItem): def install(self, context, **kw): p = context.getPortalObject() - roles = {} - for role in p.__ac_roles__: - roles[role] = 1 + # get roles if (getattr(self, 'template_format_version', 0)) == 1: role_list = self._objects.keys() else: role_list = self._archive.keys() + # set roles in PAS + if p.acl_users.meta_type == 'Pluggable Auth Service': + role_manager_list = p.acl_users.objectValues('ZODB Role Manager') + for role_manager in role_manager_list: + existing_role_list = role_manager.listRoleIds() + for role in role_list: + if role not in existing_role_list: + role_manager.addRole(role) + # set roles on portal + roles = {} + for role in p.__ac_roles__: + roles[role] = 1 for role in role_list: roles[role] = 1 p.__ac_roles__ = tuple(roles.keys())