"Dan L. Pierson" wrote:
> I'm trying to port the PTK PersistentUserSource stuff to the new
> LoginManager. A lot of things seem to be working, but I seem to have
> fallen into a Catch 22:
> 1. UserSources.BasicUserSource defines self._defaultClass as LoginUser, where
> UserSources.LoginUser is a simple RackMountable class (not a ZClass)
> defined earlier in the file.
> 2. PTK requires DemoPortal.LoginMember, a ZClass that inherits from
> LoginUser and PersistentUserSource.MemberMixin (actually, it's having
> the MemberMixin stuff that's crucial).
> 3. Rack._v_itemConstructor is a ComputedAttribute that looks at
> self._defaultClass: if it's a class, it uses it, if it's a string it
> looks in Products.meta_classes[self._defaultClass] for the class to
> So PersistentUserSource needs to change _defaultClass to refer to
> DemoPortal.LoginMember. If I try to do it by using a
> def _defaultClass(self):
> c = Products.DemoPortal.LoginMember
> self._defaultClass = c
> _defaultClass = ComputedAttribute(_defaultClass)
> I get an error traceback from an AttributeError in Rack.createItem for
> _v_itemConstructor. BTW: this also happens if I also define
> _v_itemConstructor as a ComputedAttribute in PersistentUserSource. I
> need something like ComputedAttributes here, because DemoPortal
> doesn't (necessarily?) exist at the time PTKDemo is installed.
The _defaultClass only needs to become DemoPortal.LoginMember before a
Portal's LoginManager instance is created.
Therefore, you can leave the _defaultClass as LoginUser until the
"install" method of DemoPortalBase is called (PTKDemo/Portal.py).
In the "install" method, after creating a MembersClass(), set its
_defaultClass to LoginMember.
...or have I misunderstood something important? :-)
Zope-Dev maillist - [EMAIL PROTECTED]
** No cross posts or HTML encoding! **
(Related lists -