[Zope3-dev] path adapters
Jim Fulton
jim at zope.com
Mon Sep 12 11:55:59 EDT 2005
Jean-Marc Orliaguet wrote:
> 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?
Sounds like a bug.
Jim
--
Jim Fulton mailto:jim at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Zope3-dev
mailing list