Re:[Zope-dev] Trying to set roles/permissions programmatically - Now I have a headache!

2001-04-27 Thread Danny William Adair

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 %s 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 )



Re: [Zope-dev] Trying to set roles/permissions programmatically - Now I have a headache!

2001-04-27 Thread Dieter Maurer

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 )