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

Christian Theune ct at gocept.com
Fri Oct 17 04:37:35 EDT 2008


On Wed, 2008-10-15 at 18:02 +0200, Philipp von Weitershausen wrote:
> Christian Theune wrote:
> > we stumbled over an annoyance that took a while to debug:
> > 
> > Writing an ITraversable, we used zope.traversing.api.traverse() in a
> > test to verify our code. We registered the ITraversable as an
> > (non-multi) adapter and ended up with a working test.
> > 
> > In the actual system, we found that the traversable would not be used.
> > After investigation we found a conditional branch in the traverse()
> > function which would look for a multi-adapter if a request was around,
> > and a regular adapter if not.
> > 
> > We didn't anticipate this difference and it cost us some time, so we
> > wonder whether this has to be the way it is, or whether this could be
> > changed to behave more obvious and consistent.
> 
> zope.traversing is a mess.
> 
> 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.

URL traversal makes use of zope.traversing though.

-- 
Christian Theune · ct at gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 7 · fax +49 345 1229889 1
Zope and Plone consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20081017/141bce4a/attachment.bin 


More information about the Zope-Dev mailing list