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
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to