[Zope3-Users] Re: Programmatically
changing GroupInformation.principals
Michael Howitz
mh at gocept.com
Wed Apr 12 08:22:14 EDT 2006
Andreas Elvers wrote:
> Hi,
>
> I looked a bit deeper and found that zapi.principals().getPrincipal does
> not know about principals defined in a local site. It will only return
> principals defined in zcml.
> zapi.principals().getPrincipal is used in groupfolder.py in line 261 for
> Zope 3.2.0 and magically finds the right principal when a principal is
> added to a group through ZMI. But when I try to do:
>
> mygroup.principals = ('pauprefix.principalprefix.principalid') it is
> simply not working. There must be some kind of hidden context. I think
> I'm missing a big link in the Zope3 puzzle. Can someone elaborate please ?
>
> Thanks
> - Andreas
Hi,
Zope3 stores the current site in a tread-global variable, so if you want
to change this context, you have to set a hook like this:
try:
old_site = zope.app.component.hooks.getSite()
zope.app.component.hooks.setSite(root_folder)
# do the pau things
finally:
zope.app.component.hooks.setSite(old_site)
Where root_folder is the object providing ISite (the site containing
your PAU).
HTH
--
Michael Howitz
gocept gmbh & co. kg · forsterstrasse 29 · 06112 halle/saale
www.gocept.com · fon: +49 345 12298898 · fax: +49 345 12298891
More information about the Zope3-users
mailing list