[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