[Checkins]
SVN: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
Fixed principalMatrix roles, now accurate
Daniel Blackburn
blackburnd at gmail.com
Sat Feb 16 18:19:02 EST 2008
Log message for revision 83956:
Fixed principalMatrix roles, now accurate
Changed:
U z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
-=-
Modified: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py 2008-02-16 23:05:29 UTC (rev 83955)
+++ z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py 2008-02-16 23:19:01 UTC (rev 83956)
@@ -224,6 +224,9 @@
all_settings = [{name:val} for name,val in
settingsForObject(view) ]
+ self.roleSettings, junk = \
+ self.getSettingsForMatrix(view)
+
self.populatePrincipalMatrix(all_settings)
self.orderRoleTree()
@@ -310,19 +313,19 @@
if curRole['setting'] == Allow:
# We only want to append the role if it is Allowed
if not self.principalMatrix['roles'].has_key(role):
- self.principalMatrix['roles'][role] = curRole
+ self.principalMatrix['roles'][role] = []
- for rolePerms in item['rolePermissions']:
+
# Here we get the permissions provided by each role
- if rolePerms['role'] == role:
- permission = rolePerms['permission']
- _setting = rolePerms['setting'].getName()
- mapping = {'permission': permission,
+ for rolePerm in self.roleSettings['rolePermissions']:
+ if rolePerm['role'] == role:
+ permission = rolePerm['permission']
+ _setting = rolePerm['setting'].getName()
+ mapping = {'permission': permission,
'setting': _setting}
+ if mapping not in self.principalMatrix['roles'][role]:
+ self.principalMatrix['roles'][role].append(mapping)
- if not role in self.principalMatrix['roles']:
- self.principalMatrix['roles'].append({role:mapping})
-
def populatePrincipalMatrixPermissions(self, item):
# Here we get all the permssions for this principal
for prinPerms in item.get('principalPermissions', ()):
@@ -331,11 +334,13 @@
continue
parentList = item.get('parentList',None)
+ setting = prinPerms['setting'].getName()
+
if parentList:
self.populatePrincipalPermTree(item,parentList,prinPerms)
permission = prinPerms['permission']
- _setting = prinPerms['setting'].getName()
+ _setting = prinPerms['setting']
mapping = {'permission': permission,
'setting': _setting}
if not mapping in self.principalMatrix['permissions']:
@@ -368,22 +373,12 @@
self.principalMatrix['permissionTree']\
[place][key].setdefault('permissions',[])
-
-
+
if prinPerms not in self.principalMatrix['permissionTree']\
[place][key]['permissions']:
self.principalMatrix['permissionTree']\
[place][key]['permissions'].append(prinPerms)
-
- # we make sure we only add the roles we do not yet have.
- #if curRole not in \
- # self.principalMatrix['permissionTree'][place]\
- # [key]['roles']:
- # self.principalMatrix['permissionTree'][place]\
- # [key]['roles'].append(curRole)
-
-
def permissionDetails(self, principal_id, view_name, skin=IBrowserRequest):
"""Get permission details for a given principal and view.
Includes the permissions set by the groups the principal belongs to.
More information about the Checkins
mailing list