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 )



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