[Zope-CMF] [dev] tools as utilities
Laurence Rowe
l at lrowe.co.uk
Wed Sep 5 10:14:36 UTC 2012
On 5 September 2012 11:48, yuppie <y.2012 at wcm-solutions.de> wrote:
>>>> 2.) Site root lookup: =====================
>>>>
>>>> In several tools we still assume aq_parent(aq_inner(self)) is the
>>>> portal. Or other code uses the tool as context object, expecting root
>>>> and request in its acquisition chain.
>>>>
>>>> These should be identified and replaced by
>>>> getUtility(IURLTool).getPortalObject() or other suitable code.
>>>
>>> Maybe we could add a convenience API for that?
>>
>>
>> getToolByName can be used instead as it does the lookups.
>
>
> getToolByName is no option because it is part of the machinery that should
> become obsolete.
>
> getUtility(IURLTool).getPortalObject() might be overkill because it adds the
> request to the context. All the code that needs the request should be fixed
> already. Using queryUtility(ISiteRoot) should be sufficient.
>
> But AFAICS the only way to find all the places where this needs to be fixed
> is to set up a site with tools that are not stored in the site root.
How about introducing a new getPortal() function? It could simply use
getSite() then walk back down the acquisition chain until finding an
object that directlyProvides ISiteRoot. In Plone KSS can introduce
another 'component site' between its view and the portal itself.
Laurence
More information about the Zope-CMF
mailing list