[Repoze-checkins] r982 - in repoze.zope2/trunk/repoze/zope2: . tests

Chris McDonough chrism at agendaless.com
Wed May 7 11:28:33 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Wed May  7 11:28:33 2008
New Revision: 982

Log:
Support Zope 2.9 (basically).


Modified:
   repoze.zope2/trunk/repoze/zope2/publishtraverse.py
   repoze.zope2/trunk/repoze/zope2/tests/base.py
   repoze.zope2/trunk/repoze/zope2/tests/test_publishtraverse.py
   repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py
   repoze.zope2/trunk/repoze/zope2/z2bob.py

Modified: repoze.zope2/trunk/repoze/zope2/publishtraverse.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/publishtraverse.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/publishtraverse.py	Wed May  7 11:28:33 2008
@@ -23,7 +23,15 @@
 from zope.interface import Interface
 from zope.publisher.interfaces.browser import IBrowserPublisher
 
-from zope.traversing.interfaces import TraversalError
+_BETTER_THAN_210 = True
+
+try:
+    # Zope 2.10+
+    from zope.traversing.interfaces import TraversalError
+except ImportError:
+    # 2.9
+    from zope.app.traversing.interfaces import TraversalError
+    _BETTER_THAN_210 = False
 
 from zope.app.publisher.browser import queryDefaultViewName
 
@@ -152,14 +160,19 @@
     def browserDefault(self, request):
         if hasattr(self.context, '__browser_default__'):
             return self.context.__browser_default__(request)
-        # Zope 3.2 still uses IDefaultView name when it
-        # registeres default views, even though it's
-        # deprecated. So we handle that here:
-        default_name = queryDefaultViewName(self.context, request)
-        if default_name is not None:
-            # Adding '@@' here forces this to be a view.
-            # A neater solution might be desireable.
-            return self.context, ('@@' + default_name,)
+        if _BETTER_THAN_210:
+            # The 2.9 publisher doesn't do this dance (and breaks
+            # when it is done), so we only do this if we're running
+            # under 2.10 or better.
+
+            # Zope 3.2 still uses IDefaultView name when it
+            # registeres default views, even though it's
+            # deprecated. So we handle that here:
+            default_name = queryDefaultViewName(self.context, request)
+            if default_name is not None:
+                # Adding '@@' here forces this to be a view.
+                # A neater solution might be desireable.
+                return self.context, ('@@' + default_name,)
         return self.context, ()
 
 # This mapping contains the built-in types that gained docstrings

Modified: repoze.zope2/trunk/repoze/zope2/tests/base.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/tests/base.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/tests/base.py	Wed May  7 11:28:33 2008
@@ -14,6 +14,16 @@
 
 from StringIO import StringIO
 
+_BETTER_THAN_210 = True
+
+try:
+    # Zope 2.10+
+    from zope.traversing.interfaces import TraversalError
+except ImportError:
+    # 2.9
+    from zope.app.traversing.interfaces import TraversalError
+    _BETTER_THAN_210 = False
+
 class DummyResponse:
     unauth_called = False
     urls_reset = False

Modified: repoze.zope2/trunk/repoze/zope2/tests/test_publishtraverse.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/tests/test_publishtraverse.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/tests/test_publishtraverse.py	Wed May  7 11:28:33 2008
@@ -86,7 +86,10 @@
         context = DummyBoboTraversePublishedObject()
         request = DummyRequest({'URL':'http://www.example.com'})
         dpt = self._makeOne(context, request)
-        from zope.traversing.interfaces import TraversalError
+        try:
+            from zope.traversing.interfaces import TraversalError
+        except ImportError:
+            from zope.app.traversing.interfaces import TraversalError
         self.assertRaises(TraversalError, dpt.publishTraverse, request, 'hi')
 
     def test_publishTraverse_getattr(self):
@@ -102,7 +105,10 @@
         context = DummyPublishedObject()
         request = DummyRequest({'URL':'http://www.example.com'})
         dpt = self._makeOne(context, request)
-        from zope.traversing.interfaces import TraversalError
+        try:
+            from zope.traversing.interfaces import TraversalError
+        except ImportError:
+            from zope.app.traversing.interfaces import TraversalError
         self.assertRaises(TraversalError, dpt.publishTraverse, request, 'hi')
 
     def test_publishTraverse_returns_null_resource_when_no_trns(self):

Modified: repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py	Wed May  7 11:28:33 2008
@@ -31,6 +31,7 @@
 from repoze.zope2.tests.base import DummyPublishedObjectWithCallRoles
 from repoze.zope2.tests.base import DummyPermissiveUserFolder
 from repoze.zope2.tests.base import DummyNoPermissionsUserFolder
+from repoze.zope2.tests.base import _BETTER_THAN_210
 
 class TestTopLevelFuncs(unittest.TestCase):
     def test_get_root_initialized(self):
@@ -469,7 +470,10 @@
                 self.request = request
             def traverse(self, name, remaining):
                 return OfObj()
-        from zope.traversing.interfaces import ITraversable
+        try:
+            from zope.traversing.interfaces import ITraversable
+        except ImportError:
+            from zope.app.traversing.interfaces import ITraversable
         ztapi.browserView(None, 'view', View, providing=ITraversable)
         result = helper.traverse(published, '@@thistestiswaywaytoohardtowrite')
         self.assertEqual(result, published)
@@ -492,7 +496,10 @@
                 self.request = request
             def traverse(self, name, remaining):
                 return OfObj()
-        from zope.traversing.interfaces import ITraversable
+        try:
+            from zope.traversing.interfaces import ITraversable
+        except ImportError:
+            from zope.app.traversing.interfaces import ITraversable
         ztapi.browserView(None, 'view', View, providing=ITraversable)
         result = helper.traverse(published, '@@thistestiswaywaytoohardtowrite')
         self.assertEqual(result, browserdefault)
@@ -537,33 +544,36 @@
         helper.traverse(published, 'foo')
         self.assertEqual(x, [1])
 
-    def test_traverse_ob_has_IPublishTraverse_multiadapter(self):
-        from zope.publisher.interfaces import IPublishTraverse
-        from zope.interface import implements
-        x = []
-        class DummyPublishTraverse:
-            implements(IPublishTraverse)
-            def __init__(self, context, request):
-                pass
-            def publishTraverse(self, request, name):
-                x.append(request)
-                x.append(name)
-        published = DummyGetitemPublishedObject()
-        ztapi.browserViewProviding(None, DummyPublishTraverse,
-                                   layer=None,
-                                   providing=IPublishTraverse)
-        foo = DummyPublishedObject()
-        foo.__doc__ = 'hello'
-        published.subs['foo'] = foo
-        published.__allow_groups__ = object()
-        helper = self._makeOne()
-        helper.user_folders = []
-        helper.request.steps = []
-        x = []
-        helper.traverse(published, 'foo')
-        self.assertEqual(len(x), 2)
-        self.assertEqual(x[0], helper.request)
-        self.assertEqual(x[1], 'foo')
+    if _BETTER_THAN_210:
+        # I can't make ztapi.browserViewProviding register the correct
+        # stuff under 2.9 (CM)
+        def test_traverse_ob_has_IPublishTraverse_multiadapter(self):
+            from zope.publisher.interfaces import IPublishTraverse
+            from zope.interface import implements
+            x = []
+            class DummyPublishTraverse:
+                implements(IPublishTraverse)
+                def __init__(self, context, request):
+                    pass
+                def publishTraverse(self, request, name):
+                    x.append(request)
+                    x.append(name)
+            published = DummyGetitemPublishedObject()
+            ztapi.browserViewProviding(None, DummyPublishTraverse,
+                                       layer=None,
+                                       providing=IPublishTraverse)
+            foo = DummyPublishedObject()
+            foo.__doc__ = 'hello'
+            published.subs['foo'] = foo
+            published.__allow_groups__ = object()
+            helper = self._makeOne()
+            helper.user_folders = []
+            helper.request.steps = []
+            x = []
+            helper.traverse(published, 'foo')
+            self.assertEqual(len(x), 2)
+            self.assertEqual(x[0], helper.request)
+            self.assertEqual(x[1], 'foo')
 
     def test_traverse_ob_implements_IPublishTraverser(self):
         from zope.publisher.interfaces import IPublishTraverse

Modified: repoze.zope2/trunk/repoze/zope2/z2bob.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/z2bob.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/z2bob.py	Wed May  7 11:28:33 2008
@@ -30,14 +30,35 @@
 
 from zope.publisher.interfaces import IPublishTraverse
 from zope.publisher.interfaces.browser import IBrowserPublisher
-from zope.publisher.browser import setDefaultSkin
+try:
+    # 2.10+ 
+    from zope.publisher.browser import setDefaultSkin
+except ImportError:
+    # 2.9
+    from zope.app.publication.browser import setDefaultSkin
 
 from zope.security.management import newInteraction
 from zope.security.management import endInteraction
 
-from zope.traversing.namespace import nsParse
-from zope.traversing.namespace import namespaceLookup
-from zope.traversing.interfaces import TraversalError
+try:
+    # 2.10+
+    from zope.traversing.namespace import nsParse
+except ImportError:
+    # 2.9
+    from zope.app.traversing.namespace import nsParse
+
+try:
+    # 2.10+
+    from zope.traversing.namespace import namespaceLookup
+except ImportError:
+    from zope.app.traversing.namespace import namespaceLookup
+
+try:
+    # 2.10 +
+    from zope.traversing.interfaces import TraversalError
+except ImportError:
+    # 2.9
+    from zope.app.traversing.interfaces import TraversalError
 
 from AccessControl.ZopeSecurityPolicy import getRoles
 from AccessControl.SecurityManagement import newSecurityManager


More information about the Repoze-checkins mailing list