[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