[Zope-CMF] Re: Five's local sitemanager, CMF, etc
Martin Aspeli
optilude at gmx.net
Mon Feb 26 17:53:44 EST 2007
Tres Seaver wrote:
>>>> Adapters and subscription adapters should not be acquisition wrapped.
>>> They darn well better be able to get a wrapped context (which means that
>>> the event *must* have a wrapped attribute) or they will be less than
>>> useless.
>> That's something else. Adapters and subscription adapters will get
>> whatever they are looked up with. If that's wrapped, fine. E.g. if you
>> do IWhatever(obj) and you got obj thru acquisition, then the IWhatever
>> adapter will see obj with all its acquisition glory. But The adapter
>> objects themselves shouldn't be wrapped. It would break, say, views
>> which happen to be adapters.
>
> I'll note that five views are already required to be acquisition wrapped
> if they use any objects protected by Zope2 security machinery.
Yes, and this causes quite a lot of pain, mainly because self.context
automatically becomes aq-wrapped, when it also has an inner aq chain
(its containment chain, normally), and it's counter-intuitive that it
should have an outer chain that includes the view. The wrapping is
necessary to play nice in Zope 2, but I wish it wasn't.
I don't see any good reasons why *all* adapters should be aq wrapped.
I've never needed an adapter (other than a view) that was able to
acquire things from "self", and again this would screw with the
self.context aq chain. Doing this by default would be really bad idea,
imho, and encourage a style of programming that would be hard to
untangle later.
Note that if you need an aq chain in an adapter, you're probably
adapting an aq-wrapped context, and you can access self.context.aq_chain.
Martin
More information about the Zope-CMF
mailing list