[Zope3-dev] path adapters

Jean-Marc Orliaguet jmo at ita.chalmers.se
Mon Sep 12 09:41:07 EDT 2005


Jim Fulton wrote:

> Jean-Marc Orliaguet wrote:
>
>> Stephan Richter wrote:
>>
>>
>>> On Sunday 11 September 2005 11:32, Jean-Marc Orliaguet wrote:
>>>
>>>
>>>
>>>> it there any technical reason why:
>>>>
>>>>  tal:define="displayable nocall:context/displayable"
>>>>
>>>> could not return the adapted object based on the context instead of
>>>> triggering a traversal error?
>>>>  
>>>
>>>
>>> Yes. You are not using the path adapter syntax as far as I can see.
>>> You need to have: object/path_adapter_name:function
>>>
>>> You should check the parsing implementation (probably some
>>> traversing code) to see about the assumptions.
>>>
>>> Regards,
>>> Stephan
>>>
>>>
>>
>>
>> I know that, I was about to file this as a bug, or write a proposal
>> to let
>>
>> tal:define="adapted nocall:object/path_adapter_name"
>>
>> return the adapted object, but I found a workaround, by adding:
>
>
> You both are off on the path adapter syntax.  The syntax allows
> the attribute name to be ommitted.  You can write:
>
>   tal:define="adapted nocall:object/path_adapter_name:"
>
> (note the trailing colon)
>

Yes, this is what I tried first (by guessing), but I get a traversal
error unless I write something after the trailing colon

    return traversable.traverse(nm, further_path)
  File "/home/jmo/Zope3/src/zope/app/container/traversal.py", line 100,
in traverse
    raise TraversalError(name)
TraversalError: 'displayable:'

note that the 'IDisplayable' adapter does not implement ITraversable,
but it implements IPathAdapter

class Displayable(object):
    """This adapter makes elements displayable.
    """
    implements(IDisplayable, IPathAdapter)

    def __init__(self, context):
        self.context = context

    def getDisplay(...):
...

adapter ZCML declaration:

  <adapter
      name="displayable"
      provides="zope.app.traversing.interfaces.IPathAdapter"
      for="..interfaces.IElement"
      factory=".Displayable"
  />


so either it is a bug, or am I missing something?

regards /JM


More information about the Zope3-dev mailing list