[Zope-Checkins] SVN: Products.Five/branches/1.2/ Fix traversable
bug reported by Jordan Baker
(http://codespeak.net/pipermail/z3-five/2006q2/001309.html)
Philipp von Weitershausen
philikon at philikon.de
Thu Apr 20 17:35:52 EDT 2006
Log message for revision 67186:
Fix traversable bug reported by Jordan Baker (http://codespeak.net/pipermail/z3-five/2006q2/001309.html)
Changed:
U Products.Five/branches/1.2/browser/tests/test_traversable.py
U Products.Five/branches/1.2/traversable.py
-=-
Modified: Products.Five/branches/1.2/browser/tests/test_traversable.py
===================================================================
--- Products.Five/branches/1.2/browser/tests/test_traversable.py 2006-04-20 18:06:55 UTC (rev 67185)
+++ Products.Five/branches/1.2/browser/tests/test_traversable.py 2006-04-20 21:35:51 UTC (rev 67186)
@@ -207,8 +207,8 @@
... xmlns:meta="http://namespaces.zope.org/meta"
... xmlns:browser="http://namespaces.zope.org/browser"
... xmlns:five="http://namespaces.zope.org/five">
- ... <!-- make the zope2.Public permission work -->
- ... <meta:redefinePermission from="zope2.Public" to="zope.Public" />
+ ... <!-- make the zope2.Public permission work -->
+ ... <meta:redefinePermission from="zope2.Public" to="zope.Public" />
... <browser:page
... name="eagle"
... for="OFS.interfaces.IObjectManager"
@@ -216,6 +216,7 @@
... attribute="eagle"
... permission="zope2.Public"
... />
+ ... <five:traversable class="OFS.Application.Application"/>
... </configure>'''
>>> import Products.Five
>>> from Products.Five import zcml
@@ -252,13 +253,32 @@
The eagle has landed
+ Some weird implementations of __bobo_traverse__, like the one
+ found in OFS.Application, raise NotFound. Five still knows how to
+ deal with this, hence views work there too:
+
+ >>> print http(r'''
+ ... GET /eagle HTTP/1.1
+ ...
+ ... ''')
+ HTTP/1.1 200 OK
+ ...
+ The eagle has landed
+
+ >>> print http(r'''
+ ... GET /@@eagle HTTP/1.1
+ ...
+ ... ''')
+ HTTP/1.1 200 OK
+ ...
+ The eagle has landed
+
Clean up:
>>> from zope.app.tests.placelesssetup import tearDown
>>> tearDown()
"""
-
def test_suite():
from Testing.ZopeTestCase import FunctionalDocTestSuite
return FunctionalDocTestSuite()
Modified: Products.Five/branches/1.2/traversable.py
===================================================================
--- Products.Five/branches/1.2/traversable.py 2006-04-20 18:06:55 UTC (rev 67185)
+++ Products.Five/branches/1.2/traversable.py 2006-04-20 21:35:51 UTC (rev 67186)
@@ -63,6 +63,14 @@
return self.__fallback_traverse__(REQUEST, name)
except (AttributeError, KeyError):
pass
+ except NotFound:
+ # OFS.Application.__bobo_traverse__ calls
+ # REQUEST.RESPONSE.notFoundError which sets the HTTP
+ # status code to 404
+ try:
+ REQUEST.RESPONSE.setStatus(200)
+ except AttributeError:
+ pass
else:
try:
return getattr(self, name)
More information about the Zope-Checkins
mailing list