[Checkins] SVN: z3c.securitytool/trunk/src/z3c/securitytool/ Fixed issue with permission details view not displaying all roles and permissions

Daniel Blackburn blackburnd at gmail.com
Thu Feb 7 15:03:44 EST 2008


Log message for revision 83651:
  Fixed issue with permission details view not displaying all roles and permissions

Changed:
  U   z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt
  U   z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py

-=-
Modified: z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt	2008-02-07 19:18:43 UTC (rev 83650)
+++ z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt	2008-02-07 20:03:43 UTC (rev 83651)
@@ -31,7 +31,8 @@
                                roles view/permissionDetails/roles;
                                groups view/permissionDetails/groups">
       
-            <h3 tal:condition="permissions">Directly provided permissions in context(s)</h3>
+            <h3 tal:condition="permissions">Permissions directly
+            responsible for access</h3>
             <div class="contentList"  tal:condition="permissions">
                 <span tal:repeat="permission permissions">
                 <span tal:content="view/read_perm"/>
@@ -42,7 +43,8 @@
              </div>
              <br tal:condition="permissions">
 
-              <h3 tal:condition="roles">Permissions provided by roles in context(s)</h3>
+              <h3 tal:condition="roles">Roles directly responsible for
+              access</h3>
               <div class="contentList" tal:condition="roles">
                  <div tal:repeat="role_context roles">
                     <span tal:content="role_context" />: 
@@ -56,7 +58,8 @@
                   </div>
                 </div>
                 
-                <b3 tal:condition="groups">Provided by group(s) in context(s)</b3>
+                <b3 tal:condition="groups">Groups directly responsible
+                for access</b3>
                 <div class="contentList" tal:condition="groups">
                   <div tal:repeat="group_id groups">
                     <div tal:content="group_id">zope.Authenticated</div>

Modified: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py	2008-02-07 19:18:43 UTC (rev 83650)
+++ z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py	2008-02-07 20:03:43 UTC (rev 83651)
@@ -161,6 +161,7 @@
         ifaces = tuple(providedBy(self.context))
 
         for iface in ifaces:
+
             for view_reg in getViews(iface, IBrowserRequest):
                 view = self.getView(view_reg, skin)
                 if not view:
@@ -253,7 +254,6 @@
 
     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.
         """
         principals = zapi.principals()
@@ -270,18 +270,24 @@
                     read_perm = getViewInfoDictionary(view_reg)['read_perm']
                     break
 
+        # Here we want to aggregate all the rolePermissions in one place
+        rolePermissions = []
+        for name,setting in settings:
+            if setting.get('rolePermissions',''):
+                rolePermissions.extend(setting['rolePermissions'])
+
         if read_perm is None:
             prinPermSettings = {'permissions': [],'roles': {},'groups': {}}
             read_perm ='zope.Public'
         else:        
             prinPermSettings = self._permissionDetails(principal, read_perm,
-                                                       settings)
+                                                       settings,rolePermissions)
 
         prinPermSettings['read_perm'] = read_perm
 
         return prinPermSettings
 
-    def _permissionDetails(self, principal, read_perm, settings):
+    def _permissionDetails(self, principal, read_perm, settings, rolePermissions):
         """Recursively get the permission details for a given principal and
         permission from a security mapping.
         """
@@ -293,7 +299,8 @@
         for name, setting in settings:
             prinPermMap = setting.get('principalPermissions', ())
             prinRoleMap = setting.get('principalRoles', ())
-            rolePermMap = setting.get('rolePermissions', ())
+            #rolePermMap = setting.get('rolePermissions', ())
+            rolePermMap = rolePermissions
             permSetting = principalDirectlyProvidesPermission(prinPermMap,
                 principal.id, read_perm)
             if permSetting:
@@ -310,7 +317,7 @@
             for group_id in principal.groups:
                 group = principals.getPrincipal(group_id)
                 group_settings = self._permissionDetails(group,
-                    read_perm, settings)
+                    read_perm, settings, rolePermMap)
 
                 if hasPermissionSetting(group_settings):
                     principalSettings['groups'][group_id] = group_settings
@@ -410,6 +417,7 @@
                 for (r, p, s) in settings]
 
         rolePermissions = IRolePermissionMap(ob, None)
+
         if rolePermissions is not None:
             settings = rolePermissions.getRolesAndPermissions()
             data['rolePermissions'] = [



More information about the Checkins mailing list