[Zope3-Users] Principal annotations

Tom Dossis td at yoma.com.au
Thu Mar 9 03:54:38 EST 2006


Shane Hathaway wrote:

>> Alternatively, it may possible to setup an adapter for
>> IInternalPrincipal to IPrincipal ?
> 
> I tried that first, but it got messy.  IPrincipal needs an id, but
> InternalPrincipal doesn't know its own id; only the folder that contains
> it knows.  However, the folder has no method for giving me the id of an
> InternalPrincipal, so the encapsulation isn't complete.  Maybe I should
> work harder in this direction anyway.

zapi.getName(principal) will get the id managed by principal folder, e.g.

 >>> site=root['mysite']
 >>> sm = site.getSiteManager()
 >>> pf = sm['tools']['PluggableAuthentication']['PrincipalFolder']
 >>> pf
<zope.app.authentication.principalfolder.PrincipalFolder object at 
0x419957ec>
 >>> list(pf)
[u'1']
 >>> principal = pf['1']
 >>> principal
<zope.app.authentication.principalfolder.InternalPrincipal object at 
0x4183d3ec>
 >>> from zope.app import zapi
 >>> zapi.getName(principal)
u'1'

> Your idea of annotating InternalPrincipals rather than Principals seems
> to work, but I apparently did something wrong, because edited
> annotations don't persist!  I can save edits, but when I reload the
> page, they're gone.  I don't know why.

I seem to recall encountering a similar problem once before, but 
unfortunately can't remember the details.  I do remember looking at the 
annotation code to work it out.

> 
> Thanks for helping me over a hurdle.  You'd think a Zope 2 veteran like
> me would have little trouble with Zope 3

Maybe that has something to do with it.

We switched from zope2/cmf/plone to zope3 early on in the development of 
a new application.  Interestingly the python-only programmer back then 
took to zope3 much easier than zope2/cmf/plone.

> get to know practically all of Zope 3 before I can really do anything
> with it.  (I had to do the same thing with Zope 2.)
> 

I'm sure it will all click into place soon enough.

-Tom


More information about the Zope3-users mailing list