[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