[Erp5-report] r33596 jm - /erp5/trunk/products/ERP5/Document/BusinessTemplate.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 10 20:43:55 CET 2010
Author: jm
Date: Wed Mar 10 20:43:54 2010
New Revision: 33596
URL: http://svn.erp5.org?rev=33596&view=rev
Log:
BusinessTemplate: fix installation of roles
ZODBRoleManager.listRoleIds() returns an iterator on existing roles.
We must get a copy of the list before adding/removing roles.
Modified:
erp5/trunk/products/ERP5/Document/BusinessTemplate.py
Modified: erp5/trunk/products/ERP5/Document/BusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessTemplate.py?rev=33596&r1=33595&r2=33596&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] Wed Mar 10 20:43:54 2010
@@ -3261,24 +3261,17 @@
p = context.getPortalObject()
# get roles
if context.getTemplateFormatVersion() == 1:
- role_list = self._objects.keys()
+ role_set = set(self._objects)
else:
- role_list = self._archive.keys()
+ role_set = set(self._archive)
# 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)
+ for role in role_set.difference(role_manager.listRoleIds()):
+ 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())
+ p.__ac_roles__ = tuple(role_set.union(p.__ac_roles__))
def _importFile(self, file_name, file):
if not file_name.endswith('.xml'):
More information about the Erp5-report
mailing list