Hello Dieter!
As you can see in my email (after the first paragraph), I did look through
management interface and AccessControl/*.py
Before writing to the list and annoying others with my little problems, I
1. try it myself (for a short time)
2.
- search the mailing list archives
- search all available docs: Guides, ZB, HowTos, ZQR
- saerch zope.org (wikis)
- try to see if there is a similar situation already solved (management
interface, other products)
3.
- try on my own again (found something useful), this time longer than on 1.
And I have read chapter3 :-)
Unfortunately, setting permissions programmatically has never been a hot
topic for Zopistas (too easy to talk about?).
What I was looking for was a way to get a hold of some sort of Permission
object instance. After strolling the sources, I finally found out what this
is (apparently) all about, and that I was looking for the wrong thing.
(permissionEdit.dtml - Role.py's manage_changePermission -
Permission.py's Permission.__init__)
--
Here's the result, works alright for me:
(Hey nuno! Hth, you asked for something like this on the list a month ago)
--
def setRolesForPermission(ob, permission, roles, acquire):
for p in ob.ac_inherited_permissions(1):# A
name, value = p[:2]n
if name==permission:
p=Permission(name,value,ob) # B
if acquire: roles=list(roles)
else: roles=tuple(roles)
p.setRoles(roles)
return
raise 'Invalid Permission', (The permission em%s/em is invalid. %
permission)
--
(ok, assigning a value (maybe lots of times) where it's only needed in one
case is inefficent)
A and B were the hints I missed when I wrote the last mail.
So you really *do* run through all the permissions, get their names and
check against your string parameter until you match. (Is this a must?) Then
you *instantiate* a Permission. (see
Permission.__init__(self,name,data,obj,default=None)) Yes, and setRoles
(and acquisition setting) works like I expected, phew.
Thanks anyway,
Danny
-Ursprungliche Nachricht-
Von: Dieter Maurer [mailto:[EMAIL PROTECTED]]
Gesendet: Samstag, 28. April 2001 06.26
An: Danny William Adair
Cc: [EMAIL PROTECTED]
Betreff: Re: [Zope-dev] Trying to set roles/permissions programmatically
- Now I have a headache!
Danny William Adair writes:
I want to set the roles of a permission and turn acquisition
of a permission
(mapping) on and off programmatically. And of course I want to get a
permission by its name. This looks definitely more complex
than simply
changing an object's property!
My standard response to questions like this:
You know, you can do this via the Management Interface.
Its code will tell you, how you can do it: the necessary
method names and their parameters.
After you know the names, you look for further documentation:
the Zope Help, maybe the new Zope Developer Guide,
the source.
The source for the updating of permissions is
AccessControl/dtml/access.dtml.
The methods are defined in various Python files
in AccessControl.
Dieter
___
Zope-Dev maillist - [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
** No cross posts or HTML encoding! **
(Related lists -
http://lists.zope.org/mailman/listinfo/zope-announce
http://lists.zope.org/mailman/listinfo/zope )