[Zope-dev] traversal: different with and without a request

Shane Hathaway shane at hathawaymix.org
Wed Oct 15 13:24:18 EDT 2008


Philipp von Weitershausen wrote:
> First of all, its name is quite misleading. It should really be called 
> 'zope.resolvepath' because it resolves TALES-like object paths. In fact, 
> it's pretty much only used by the PageTemplate machinery to hook it up 
> to the TALES engine (with one exception, see below). The request 
> shouldn't really be necessary for this kind of path resolution, I think. 
>   The conditional multi-adaption sounds like a DWIM feature that I would 
> consider one of our many mistakes that we made in the beginnings of our 
> using the Component Architecture.
> 
> There is a process that actually needs the request and this process is 
> what I call traversal: breaking down a URL and finding a publishable 
> object. zope.traversing has (almost) nothing to do with it, the real 
> kind of traversal happens in the publisher and facilitates 
> IPublishTraverse adapters (rather than ITraversable). The only case when 
> the two kinds of "traversal" are intermingled is when ++namespaces++ are 
> involved. Then IPublishTraverse-style traversal uses ITraversable 
> adapters. This has long been considered a mistake but was never fixed.
> 
> I'm not sure my explanation are helpful ;). Did I mention it was a mess?

This is very useful information that would have saved me a lot of
confusion years ago.  Is this written somewhere permanent, at least?
Everyone who does anything at all with ITraversable or IPublishTraverse
needs to understand this, at least until traversal is redesigned.

Shane



More information about the Zope-Dev mailing list