[Zope-Checkins]
SVN: Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/
Remove fallback on __bobo_traverse__ failure,
as discussed with Chris McDonough.
Sidnei da Silva
sidnei at awkly.org
Wed Oct 6 15:16:20 EDT 2004
Log message for revision 27773:
Remove fallback on __bobo_traverse__ failure, as discussed with Chris McDonough.
Changed:
U Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/BaseRequest.py
U Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/tests/testBaseRequest.py
-=-
Modified: Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/BaseRequest.py
===================================================================
--- Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/BaseRequest.py 2004-10-06 08:40:56 UTC (rev 27772)
+++ Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/BaseRequest.py 2004-10-06 19:16:20 UTC (rev 27773)
@@ -308,19 +308,20 @@
"Object name begins with an underscore at: %s" % URL)
else: return response.forbiddenError(entry_name)
- bobo_got = 0
- try:
- if hasattr(object,'__bobo_traverse__'):
+ if hasattr(object,'__bobo_traverse__'):
+ try:
subobject=object.__bobo_traverse__(request,entry_name)
- bobo_got = 1
if type(subobject) is type(()) and len(subobject) > 1:
# Add additional parents into the path
parents[-1:] = list(subobject[:-1])
object, subobject = subobject[-2:]
- except (AttributeError, KeyError):
- pass
-
- if not bobo_got:
+ except (AttributeError, KeyError):
+ if debug_mode:
+ return response.debugError(
+ "Cannot locate object at: %s" % URL)
+ else:
+ return response.notFoundError(URL)
+ else:
try:
# Note - no_acquire_flag is necessary to support
# things like DAV. We have to make sure
Modified: Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/tests/testBaseRequest.py
===================================================================
--- Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/tests/testBaseRequest.py 2004-10-06 08:40:56 UTC (rev 27772)
+++ Zope/branches/dc-bobo_traverse-branch/lib/python/ZPublisher/tests/testBaseRequest.py 2004-10-06 19:16:20 UTC (rev 27773)
@@ -50,17 +50,6 @@
def __bobo_traverse__(self, REQUEST, name):
raise AttributeError, name
- def dummyMethod(self):
- """Dummy method with docstring."""
- return 'Dummy Value'
-
- def __getitem__(self, name):
- if name.startswith('no_key_'):
- raise KeyError, name
- name = name.replace('key_', '')
- return getattr(self, name)
-
-
class DummyObjectWithBD(DummyObjectBasic):
"""Dummy class with docstring."""
@@ -75,7 +64,7 @@
"""Dummy class with docstring."""
def __bobo_traverse__(self, REQUEST, name):
- if name == self.default_path[0]:
+ if name == self._default_path[0]:
return getattr(self, name)
raise AttributeError, name
@@ -165,28 +154,6 @@
r = self.makeBaseRequest()
self.failUnlessRaises(NotFound, r.traverse, 'folder/objWithBBT/bbt_foo')
- def test_traverse_withBBT_fallback_getattr(self):
- # Test that if __bobo_traverse__ raises AttributeError
- # that we fallback to getattr()
- r = self.makeBaseRequest()
- r.traverse('folder/objWithBBT/dummyMethod')
- self.assertEqual(r.URL, '/folder/objWithBBT/dummyMethod')
-
- def test_traverse_withBBT_fallback_getitem(self):
- # Test that if __bobo_traverse__ raises AttributeError
- # and getattr raises AttributeError
- # that we fallback to __getitem__
- r = self.makeBaseRequest()
- r.traverse('folder/objWithBBT/key_dummyMethod')
- self.assertEqual(r.URL, '/folder/objWithBBT/key_dummyMethod')
-
- def test_traverse_withBBT_fallback_getitem_NotFound(self):
- # Test that if all else fails, we get a NotFound
- from ZPublisher import NotFound
- r = self.makeBaseRequest()
- self.failUnlessRaises(NotFound, r.traverse,
- 'folder/objWithBBT/no_key_dummyMethod')
-
def test_traverse_withBDBBT(self):
# Test for an object which has a __browser_default__
# and __bobo_traverse__
@@ -202,7 +169,6 @@
# Test for an object which has a __browser_default__
# and __bobo_traverse__
# __bobo_traverse__ should raise an AttributeError, which will
- # end up falling back to getattr, then __getitem__ to finally
# raise a NotFound
from ZPublisher import NotFound
r = self.makeBaseRequest()
More information about the Zope-Checkins
mailing list