Commit f08b7e0c authored by Nicolas Delaby's avatar Nicolas Delaby

Revert r29504 as we should care to reduce diff between upstream

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@29508 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 5d6acbfb
# -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved. # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
...@@ -454,52 +453,52 @@ DCWorkflowDefinition.wrapWorkflowMethod = DCWorkflowDefinition_wrapWorkflowMetho ...@@ -454,52 +453,52 @@ DCWorkflowDefinition.wrapWorkflowMethod = DCWorkflowDefinition_wrapWorkflowMetho
# Patch updateRoleMappingsFor so that if 2 workflows define security, then we # Patch updateRoleMappingsFor so that if 2 workflows define security, then we
# should do an AND operation between each permission # should do an AND operation between each permission
def updateRoleMappingsFor(self, ob): def updateRoleMappingsFor(self, ob):
''' '''
Changes the object permissions according to the current Changes the object permissions according to the current
state. state.
''' '''
changed = 0 changed = 0
sdef = self._getWorkflowStateOf(ob) sdef = self._getWorkflowStateOf(ob)
tool = aq_parent(aq_inner(self)) tool = aq_parent(aq_inner(self))
other_workflow_list = \ other_workflow_list = \
[x for x in tool.getWorkflowsFor(ob) if x.id != self.id and isinstance(x,DCWorkflowDefinition)] [x for x in tool.getWorkflowsFor(ob) if x.id != self.id and isinstance(x,DCWorkflowDefinition)]
other_data_list = [] other_data_list = []
for other_workflow in other_workflow_list: for other_workflow in other_workflow_list:
other_sdef = other_workflow._getWorkflowStateOf(ob) other_sdef = other_workflow._getWorkflowStateOf(ob)
if other_sdef is not None and other_sdef.permission_roles is not None: if other_sdef is not None and other_sdef.permission_roles is not None:
other_data_list.append((other_workflow,other_sdef)) other_data_list.append((other_workflow,other_sdef))
# Be carefull, permissions_roles should not change # Be carefull, permissions_roles should not change
# from list to tuple or vice-versa. (in modifyRolesForPermission, # from list to tuple or vice-versa. (in modifyRolesForPermission,
# list means acquire roles, tuple means do not acquire) # list means acquire roles, tuple means do not acquire)
if sdef is not None and self.permissions: if sdef is not None and self.permissions:
for p in self.permissions: for p in self.permissions:
roles = [] roles = []
refused_roles = [] refused_roles = []
role_type = 'list' role_type = 'list'
if sdef.permission_roles is not None: if sdef.permission_roles is not None:
roles = sdef.permission_roles.get(p, roles) roles = sdef.permission_roles.get(p, roles)
if type(roles) is type(()): if type(roles) is type(()):
role_type = 'tuple' role_type = 'tuple'
roles = list(roles) roles = list(roles)
# We will check that each role is activated # We will check that each role is activated
# in each DCWorkflow # in each DCWorkflow
for other_workflow,other_sdef in other_data_list: for other_workflow,other_sdef in other_data_list:
if p in other_workflow.permissions: if p in other_workflow.permissions:
other_roles = other_sdef.permission_roles.get(p, []) other_roles = other_sdef.permission_roles.get(p, [])
if type(other_roles) is type(()) : if type(other_roles) is type(()) :
role_type = 'tuple' role_type = 'tuple'
for role in roles: for role in roles:
if role not in other_roles : if role not in other_roles :
refused_roles.append(role) refused_roles.append(role)
for role in refused_roles : for role in refused_roles :
if role in roles : if role in roles :
roles.remove(role) roles.remove(role)
if role_type=='tuple': if role_type=='tuple':
roles = tuple(roles) roles = tuple(roles)
if modifyRolesForPermission(ob, p, roles): if modifyRolesForPermission(ob, p, roles):
changed = 1 changed = 1
return changed return changed
DCWorkflowDefinition.updateRoleMappingsFor = updateRoleMappingsFor DCWorkflowDefinition.updateRoleMappingsFor = updateRoleMappingsFor
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment