[Zope-Checkins] SVN: Zope/branches/2.11/ Forward port fix for LP#213311 from 2.10 branch.

Tres Seaver tseaver at palladion.com
Mon Apr 28 17:06:37 EDT 2008


Log message for revision 85833:
  Forward port fix for LP#213311 from 2.10 branch.

Changed:
  U   Zope/branches/2.11/doc/CHANGES.txt
  U   Zope/branches/2.11/lib/python/ZPublisher/BaseRequest.py
  U   Zope/branches/2.11/lib/python/ZPublisher/tests/testBaseRequest.py

-=-
Modified: Zope/branches/2.11/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.11/doc/CHANGES.txt	2008-04-28 21:02:02 UTC (rev 85832)
+++ Zope/branches/2.11/doc/CHANGES.txt	2008-04-28 21:06:37 UTC (rev 85833)
@@ -8,6 +8,9 @@
 
     Bugs Fixed
 
+      - Launchpad #213311:  Handle "unsubscriptable object" errors
+        during publishing traversal.
+
       - Products.Five: Fixed vocabulary lookup broken in 2.11 beta 1.
         ZopeVocabularyRegistry wasn't hooked up on startup.
 

Modified: Zope/branches/2.11/lib/python/ZPublisher/BaseRequest.py
===================================================================
--- Zope/branches/2.11/lib/python/ZPublisher/BaseRequest.py	2008-04-28 21:02:02 UTC (rev 85832)
+++ Zope/branches/2.11/lib/python/ZPublisher/BaseRequest.py	2008-04-28 21:06:37 UTC (rev 85833)
@@ -121,7 +121,10 @@
                     pass
 
                 # Lastly we try with key access:
-                subobject = object[name]
+                try:
+                    subobject = object[name]
+                except TypeError: # unsubscriptable
+                    raise KeyError(name)
                 
 
         # Ensure that the object has a docstring, or that the parent

Modified: Zope/branches/2.11/lib/python/ZPublisher/tests/testBaseRequest.py
===================================================================
--- Zope/branches/2.11/lib/python/ZPublisher/tests/testBaseRequest.py	2008-04-28 21:02:02 UTC (rev 85832)
+++ Zope/branches/2.11/lib/python/ZPublisher/tests/testBaseRequest.py	2008-04-28 21:06:37 UTC (rev 85833)
@@ -244,7 +244,16 @@
         r._hold(lambda x: None)
         self.assertEqual(r._held, None)
 
+    def test_traverse_unsubscriptable(self):
+        # See https://bugs.launchpad.net/bugs/213311
+        from ZPublisher import NotFound
+        class _Object(object):
+            pass
+        root = _Object()
+        r = self._makeOne(None)
+        self.assertRaises(NotFound, r.traverse, 'not_found')
 
+
 class TestBaseRequestZope3Views(unittest.TestCase):
 
     def _getTargetClass(self):



More information about the Zope-Checkins mailing list