[Zope-CMF] Re: Five's local sitemanager, CMF, etc

Martin Aspeli optilude at gmx.net
Mon Feb 26 17:17:07 EST 2007


Philipp von Weitershausen wrote:
> Tres Seaver wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Philipp von Weitershausen wrote:
>>> Rocky wrote:
>>>> On Feb 23, 3:50 pm, Martin Aspeli <optil... at gmx.net> wrote:
>>>>> yuppie wrote:
>>>>>> Maybe I'm missing something. But wasn't a major goal of
>>>>>> five.localsitemanager to return acquisition wrapped tools?
>>>>> That was my understanding, too. I thought this would just mean
>>>>> aq_base'ing the utility and aq-wrapping it back into the context (the
>>>>> portal root). Without this, we start requiring users of the interface to
>>>>> know when aq wrapping is needed and do it explicitly with __of__() which
>>>>> I think we agreed was unacceptably detailed and ugly. :)
>>>> Alright, I've gone ahead and put code in place for this (albeit a bit
>>>> naively) with r72810.  The next question is whether we should be doing
>>>> the same with adapters and subscribers as well (even though this
>>>> doesn't affect the whole tools-getting-acquired-properly issue).
>>> One more thing: This acquisition wrapping should clearly be marked (with 
>>> comments) as something that's done to for BBB because some tools happen 
>>> to want acquisition. I think in the future, it should be discouraged to 
>>> expect acquisition in CMF tools.
>> - -1.  This is not *yet* BBB, until we require a version of Zope which no
>> longer uses acquisition for anything crucial.  Premature deprecation is
>> "crying wolf", IMNSHO.
> 
> I nowhere said anything about deprecation. All meant was to discourage 
> relying on acquisition when developing new tools. I think that deserves 
> a comment (I suggested nothing more). No deprecation warning or anything 
> necessary;.

+1 - well, except that it's probably more appropriate to just promote 
local utilities (we even have GS for setting them up).

>>> To get to the portal root / CMF site, I suggest a pattern that is 
>>> sometimes used in Zope3: We register the CMF site object as a utility 
>>> providing ICMFSite (or whatever). Then whichever code that's executed 
>>> below the portal (and that includes CMF tools) can do 
>>> getUtility(ICMFSite) to get to the site.
>>>
>>> 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.

Yeah, I was about to say the same. Having aq-wrapped adapters sounds 
like a really scary idea. :) In fact, we know how scary it is, since our 
view multi-adapters are aq-aware.

self.context will of course be aq wrapped if it was aq wrapped before.

Martin



More information about the Zope-CMF mailing list