[Checkins] SVN: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view Permission roles are now changeable by managers.

Uli Fouquet uli at gnufix.de
Mon Aug 20 00:17:03 EDT 2007


Log message for revision 79009:
  Permission roles are now changeable by managers.

Changed:
  U   Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py
  U   Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/permissions.pt

-=-
Modified: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py
===================================================================
--- Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py	2007-08-20 03:17:04 UTC (rev 79008)
+++ Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py	2007-08-20 04:17:02 UTC (rev 79009)
@@ -434,6 +434,11 @@
         return zope.component.getUtilitiesFor(IRole, self.context)
 
     def getPermissions(self):
+        """Get a sorted list of permissions locally available.
+
+        The list returned is a list of objects implementing
+        ``IPermission``, not of simple strings.
+        """
         permissions = getattr(self, 'permissions', None)
         if permissions is not None:
             return self.permissions
@@ -444,6 +449,9 @@
         return permissions
 
     def getPermissionRoles(self):
+        """Get a dict of dicts containing the current role->permission
+        mappings.
+        """
         prm = IRolePermissionManager(self.context)
         result = {}
         for perm in self.permissions:
@@ -458,21 +466,43 @@
         return result
 
     def getSettingNames(self):
+        """Get a list of all available permission settings.
+        """
         return [setting.getName() for setting in [Unset, Allow, Deny]]
 
-    def getPRoleName(self, permid, rolename):
-        return "%s.%s" % (permid.replace('.', '_'),
-                          rolename.replace('.', '_'))
+    def setPermissionRoles(self):
+        """Set permissions of roles.
+        """
+        prm = IRolePermissionManager(self.context)
+        permissions = [perm.id for perm in self.permissions]
+        print self.request
+        for perm in permissions:
+            rperm = self.request.get(u'perm%s' % perm)
+            if rperm not in permissions:
+                continue
+            for role in self.roles:
+                rrole = self.request.get('role%s' % role)
+                if rrole not in self.roles:
+                    continue
+                setting = self.request.get(u'prole%s%s' % (perm, role))
+                if setting is None:
+                    continue
+                if setting == Unset.getName():
+                    prm.unsetPermissionFromRole(rperm, rrole)
+                elif setting == Allow.getName():
+                    prm.grantPermissionToRole(rperm, rrole)
+                elif setting == Deny.getName():
+                    prm.denyPermissionToRole(rperm, rrole)
+                else:
+                    # Unknown value. Ignore it.
+                    pass
 
-    def setPermissionRoles(self, proles):
-        pass
 
-    def update(self, proles=None):
-        self.proles_arg = proles
+    def update(self, set_proles=None):
         self.roles = [name for name, util in self.getRoles()]
         self.permissions = list(self.getPermissions())
-        if proles is not None:
-            self.setPermissionRoles(proles)
+        if set_proles is not None:
+            self.setPermissionRoles()
         self.proles = self.getPermissionRoles()
         self.settingnames = self.getSettingNames()
 

Modified: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/permissions.pt
===================================================================
--- Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/permissions.pt	2007-08-20 03:17:04 UTC (rev 79008)
+++ Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/permissions.pt	2007-08-20 04:17:02 UTC (rev 79009)
@@ -10,18 +10,17 @@
     <div>
 
       <fieldset>
-	<legend>Add new permission:</legend>
-	
-	<form method="post">
-	  <fieldset class="menu-box2">
-	  </fieldset>
-	</form>
-      </fieldset>
-
-      <fieldset>
 	<legend>Roles and Permissions:</legend>
 	
 	<form method="post">
+	  <input type="hidden"
+		 tal:repeat="role view/roles"
+		 tal:attributes="name string:role${role};
+				 value role" />
+	  <input type="hidden"
+		 tal:repeat="perm view/permissions"
+		 tal:attributes="name string:perm${perm/id};
+				 value perm/id" />
 	  <fieldset class="menu-box2">
 	    <table>
 	      <tr>
@@ -32,16 +31,16 @@
 	      <tr tal:repeat="perm view/permissions">
 		<td tal:content="perm/id">perm.id</td>
 		<td tal:repeat="role view/roles" align="center">
-		  <select name="proles">
+		  <select name="prole"
+			  tal:attributes="name string:prole${perm/id}${role}">
 		    <option tal:repeat="setting view/settingnames"
-			    tal:attributes="selected python:setting==view.proles[perm.id][role];
-					    value python: '%s.%s' % (view.getPRoleName(perm.id, role), setting)"
+			    tal:attributes="selected python:setting==view.proles[perm.id][role]"
 			    tal:content="setting" />
 		  </select>
 		</td>
 	      </tr>
 	    </table>
-	    <input type="submit" name="SET_PROLES" value="Save" />
+	    <input type="submit" name="set_proles" value="Save" />
 	  </fieldset>
 	</form>
       </fieldset>



More information about the Checkins mailing list