[Checkins] SVN: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py Refactored the securitytool.py's getPermissionSettingsForAllViews to be a little more readable

Daniel Blackburn blackburnd at gmail.com
Wed Oct 3 19:42:26 EDT 2007


Log message for revision 80566:
  Refactored the securitytool.py's getPermissionSettingsForAllViews to be a little more readable

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	2007-10-03 22:19:47 UTC (rev 80565)
+++ z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py	2007-10-03 23:42:25 UTC (rev 80566)
@@ -36,67 +36,83 @@
 
     def getPermissionSettingsForAllViews(self,interfaces,skin=IBrowserRequest,
                                          selectedPermission=None):
-        import pdb; pdb.set_trace()
         request = TestRequest()
-        applySkin(request, skin)
-        viewMatrix = {}
-        views = {}
-        permissions = set()
+        self.skin = skin
+        self.selectedPermission = selectedPermission
+
+        applySkin(request, self.skin)        
+        self.viewMatrix = {}
+        self.views = {}
+        self.permissions = set()
         for iface in interfaces:
-            for view_reg in getViews(iface, skin):
-                viewInstance = self.getView(view_reg, skin)
+            for view_reg in getViews(iface, self.skin):
+                viewInstance = self.getView(view_reg, self.skin)
                 if viewInstance:
-                    info = getViewInfoDictionary(view_reg)
-                    read_perm = info['read_perm']
-                    permissions.add(read_perm)
-                    if read_perm == None:
-                        read_perm = 'zope.Public'
-                    if selectedPermission and selectedPermission != read_perm:
-                        continue
-                    name = info['name']
-                    views[name] = read_perm
-                    settings = [entry[1] for entry in \
-                                    settingsForObject(viewInstance)]
-                    for setting in settings:
-                        rolePermMap = setting.get('rolePermissions', ())
-                        principalRoles = setting.get('principalRoles', [])
-                        for role in principalRoles:
-                            principal = role['principal']
-                            if read_perm == 'zope.Public':
-                                permissionSetting = (role,'Allow')
-                            else:
-                                permissionSetting=principalRoleProvidesPermission(
-                                                        principalRoles, rolePermMap, 
-                                                        principal, read_perm)
-                            if permissionSetting[1]:
-                                if viewMatrix.has_key(principal):
-                                    if viewMatrix[principal].has_key(name):
-                                        if viewMatrix[principal][name] != 'Deny':
-                                            viewMatrix[principal].update(
-                                                 {name: permissionSetting[1]}
-                                                            )
-                                    else:
-                                        viewMatrix[principal][name] = permissionSetting[1]
-                                else:
-                                    viewMatrix[principal] = {name: permissionSetting[1]} 
+                    self.populateMatrix(viewInstance,view_reg)
+        return [self.viewMatrix,self.views,self.permissions]
 
-                        principalPermissions = setting.get('principalPermissions',[])
-                        for principalPermission in principalPermissions:
-                            if principalPermission['permission'] == read_perm:
-                                principal = principalPermission['principal']
-                                permissionSetting = principalPermission['setting'].getName()
-                                if viewMatrix.has_key(principal):
-                                    if viewMatrix[principal].has_key(name):
-                                        if viewMatrix[principal][name] != 'Deny':
-                                            viewMatrix[principal].update(
-                                                            {name: permissionSetting}
-                                                            )
-                                    else:
-                                        viewMatrix[principal][name] = permissionSetting
-                                else:
-                                    viewMatrix[principal] = {name: permissionSetting}
-        return [viewMatrix,views,permissions]
 
+    def populateMatrix(self,viewInstance,view_reg):
+
+        info = getViewInfoDictionary(view_reg)
+        read_perm = info['read_perm']
+        self.permissions.add(read_perm)
+        if read_perm == None:
+            read_perm = 'zope.Public'
+        if self.selectedPermission and self.selectedPermission != read_perm:
+            return 
+        self.name = info['name']
+        self.views[self.name] = read_perm
+        settings = [entry[1] for entry in settingsForObject(viewInstance)]
+        for setting in settings:
+            rolePermMap = setting.get('rolePermissions', ())
+            principalRoles = setting.get('principalRoles', [])
+            for role in principalRoles:
+                principal = role['principal']
+                if read_perm == 'zope.Public':
+                    permSetting = (role,'Allow')
+                else:
+                    permSetting= principalRoleProvidesPermission(
+                                   principalRoles, rolePermMap, 
+                                   principal, read_perm
+                                )
+                if permSetting[1]:
+                    if self.viewMatrix.has_key(principal):
+                        if self.viewMatrix[principal].has_key(self.name):
+                            if self.viewMatrix[principal][self.name]!='Deny':
+                                self.viewMatrix[principal].update(
+                                 {self.name: permSetting[1]}
+                                )
+                        else:
+                            self.viewMatrix[principal][self.name] =\
+                                                   permSetting[1]
+                    else:
+                        self.viewMatrix[principal]={self.name: permSetting[1]} 
+
+            principalPermissions =  setting.get('principalPermissions',[])
+            self.populatePermissionMatrix(read_perm,principalPermissions)
+
+
+    def populatePermissionMatrix(self,read_perm,principalPermissions):
+        """ This method populates the principal permission section of
+            the view matrix
+        """
+        for principalPermission in principalPermissions:
+            if principalPermission['permission'] == read_perm:
+                principal = principalPermission['principal']
+                permSetting = principalPermission['setting'].getName()
+                if self.viewMatrix.has_key(principal):
+                    if self.viewMatrix[principal].has_key(self.name):
+                        if self.viewMatrix[principal][self.name] != 'Deny':
+                            self.viewMatrix[principal].update(
+                                {self.name: permSetting}
+                                )
+                    else:
+                        self.viewMatrix[principal][self.name] = permSetting
+                else:
+                    self.viewMatrix[principal] = {self.name: permSetting}
+
+    
     def principalPermissions(self, principal_id, skin=IBrowserRequest):
         """Return all security settings for a `principal_id`."""
 



More information about the Checkins mailing list