[Zope-dev] Re: default view

Florent Guillaume fg at nuxeo.com
Thu Jun 22 08:50:36 EDT 2006


On 22 Jun 2006, at 14:43, Tres Seaver wrote:
> Philipp von Weitershausen wrote:
>> Dieter Maurer wrote:
>>> Florent Guillaume wrote at 2006-6-18 02:05 +0200:
>>>> ...
>>>>             if hasattr(object,'__bobo_traverse__'):
>>>>                 subobject=object.__bobo_traverse__(request, name)
>>> If you are working on it, then you should implement a
>>> means that "__bobo_traverse__" can tell the caller that
>>> it should use the normal default.
>>>
>>> This feature makes lots of "__bobo_traverse__" implementations
>>> much saner. A prominent example is the Archetypes' one.
>>>
>>>
>>> In our private Zope version, I have used an exception
>>> ("UseTraversalDefault") for this purpose.
>>
>> I think that __bobo_traverse__ can raise AttributeError currently to
>> indicate that it has failed to look up an attribute and that  
>> traversal
>> should try other options. Apart from being a more explicit spelling,
>> what advantage would UseTraversalDefault have?
>
> The contract for '__bobo_traverse__' is actually insane on this point,
> becuase it has to serve two "masters":
>
>   - In publishing traversal, an AttributeErrror raised from
>     '__bobo_traverse__' has the semantics you describe.
>
>   - In '{un,}restrictedTraverse', an AtttributeError causes the whole
>     traversal process to abort, returning the 'default' value (if
>     passed), or raising.
>
> Fixing this incompatibility without breaking applications which may be
> unknowingling dependent on it is going to be hard.

Which is one of the reasons why abandoning it and moving on to Zope 3  
traversal is the only sane way to proceed :)

Abandon = deprecate, yes :)

Florent

-- 
Florent Guillaume, Nuxeo (Paris, France)   Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com





More information about the Zope-Dev mailing list