[Checkins] SVN: CMF/branches/1.6/CMFCore/ Make fix for http://www.zope.org/Collectors/CMF/459 work on Zope 2.8 as well.

Philipp von Weitershausen philikon at philikon.de
Sat Dec 9 10:02:07 EST 2006


Log message for revision 71508:
  Make fix for http://www.zope.org/Collectors/CMF/459 work on Zope 2.8 as well.
  

Changed:
  U   CMF/branches/1.6/CMFCore/DynamicType.py
  U   CMF/branches/1.6/CMFCore/tests/test_DynamicType.py

-=-
Modified: CMF/branches/1.6/CMFCore/DynamicType.py
===================================================================
--- CMF/branches/1.6/CMFCore/DynamicType.py	2006-12-08 16:48:16 UTC (rev 71507)
+++ CMF/branches/1.6/CMFCore/DynamicType.py	2006-12-09 15:02:06 UTC (rev 71508)
@@ -23,8 +23,14 @@
 from interfaces.Dynamic import DynamicType as IDynamicType
 from utils import getToolByName
 
-from zope.component import queryMultiAdapter
-from zope.app.publisher.browser import queryDefaultViewName
+try:
+    from zope.app.publisher.browser import queryDefaultViewName
+    from zope.component import queryMultiAdapter
+    def queryView(obj, name, request):
+        return queryMultiAdapter((obj, request), name=name)
+except ImportError:
+    # BBB for Zope 2.8
+    from zope.component import queryDefaultViewName, queryView
 
 class DynamicType:
     """
@@ -126,7 +132,7 @@
         if key == '(Default)':
             viewname = queryDefaultViewName(self, REQUEST)
             if (viewname and
-                queryMultiAdapter((self, REQUEST), name=viewname) is not None):
+                queryView(self, viewname, REQUEST) is not None):
                 stack.append(viewname)
                 REQUEST._hacked_path = 1
                 return

Modified: CMF/branches/1.6/CMFCore/tests/test_DynamicType.py
===================================================================
--- CMF/branches/1.6/CMFCore/tests/test_DynamicType.py	2006-12-08 16:48:16 UTC (rev 71507)
+++ CMF/branches/1.6/CMFCore/tests/test_DynamicType.py	2006-12-09 15:02:06 UTC (rev 71508)
@@ -23,8 +23,10 @@
     import Zope as Zope2
 Zope2.startup()
 
+from StringIO import StringIO
+
 from Acquisition import Implicit
-from ZPublisher.BaseRequest import BaseRequest
+from ZPublisher.HTTPRequest import HTTPRequest
 from ZPublisher.HTTPResponse import HTTPResponse
 
 from Products.CMFCore.DynamicType import DynamicType
@@ -37,8 +39,8 @@
 from Products.CMFCore.TypesTool import TypesTool
 
 import zope.component
-from zope.testing.cleanup import CleanUp
-from zope.component.interfaces import IDefaultViewName
+from zope.interface import Interface, implements
+from zope.component.tests.placelesssetup import PlacelessSetup
 from zope.publisher.interfaces.browser import IBrowserRequest
 from zope.app.publisher.interfaces.browser import IBrowserView
 
@@ -49,14 +51,22 @@
 from zope.app.traversing.interfaces import ITraverser, ITraversable
 
 def defineDefaultViewName(name, for_=None):
-    zope.component.provideAdapter(name, (for_, BaseRequest),
-                                  IDefaultViewName, '')
+    try:
+        from zope.component.interfaces import IDefaultViewName
+        zope.component.provideAdapter(name, (for_, IBrowserRequest),
+                                      IDefaultViewName, '')
+    except ImportError:
+        # BBB for Zope 2.8
+        pres = zope.component.getService(zope.component.Presentation)
+        pres.setDefaultViewName(for_, IBrowserRequest, name)
 
+class IDummyContent(Interface):
+    pass
 
 class DummyContent(Traversable, DynamicType, Implicit):
     """ Basic dynamic content class.
     """
-
+    implements(IDummyContent)
     portal_type = 'Dummy Content 15'
 
 
@@ -78,9 +88,11 @@
         from Products.CMFCore.interfaces import IDynamicType
         verifyClass(IDynamicType, DynamicType)
 
-class DynamicTypeDefaultTraversalTests(CleanUp, TestCase):
+class DynamicTypeDefaultTraversalTests(PlacelessSetup, TestCase):
 
     def setUp(self):
+        super(DynamicTypeDefaultTraversalTests, self).setUp()
+
         self.site = DummySite('site')
         self.site._setObject( 'portal_types', TypesTool() )
         fti = FTIDATA_CMF15[0].copy()
@@ -88,18 +100,28 @@
         self.site._setObject( 'foo', DummyContent() )
         dummy_view = self.site._setObject( 'dummy_view', DummyObject() )
 
-        zope.component.provideAdapter(FiveTraversable, (None,), ITraversable)
-        zope.component.provideAdapter(Traverser, (None,), ITraverser)
+        try:
+            from zope.component import provideAdapter
+            provideAdapter(FiveTraversable, (None,), ITraversable)
+            provideAdapter(Traverser, (None,), ITraverser)
+        except ImportError:
+            # BBB for Zope 2.8
+            from zope.app.tests import ztapi
+            ztapi.provideAdapter(None, ITraversable, FiveTraversable)
+            ztapi.provideAdapter(None, ITraverser, Traverser)
 
     def test_default_view_from_fti(self):
         response = HTTPResponse()
         environment = { 'URL': '',
                         'PARENTS': [self.site],
                         'REQUEST_METHOD': 'GET',
+                        'SERVER_NAME': 'localhost',
+                        'SERVER_PORT': '80',
+                        'REQUEST_METHOD': 'GET',
                         'steps': [],
-                        '_hacked_path': 0,
-                        'response': response }
-        r = BaseRequest(environment)
+                        '_hacked_path': 0}
+        r = HTTPRequest(StringIO(), environment, response)
+        r.other.update(environment)
 
         r.traverse('foo')
         self.assertEqual( r.URL, '/foo/dummy_view' )
@@ -112,14 +134,17 @@
         environment = { 'URL': '',
                         'PARENTS': [self.site],
                         'REQUEST_METHOD': 'GET',
+                        'SERVER_NAME': 'localhost',
+                        'SERVER_PORT': '80',
+                        'REQUEST_METHOD': 'GET',
                         'steps': [],
-                        '_hacked_path': 0,
-                        'response': response }
-        r = BaseRequest(environment)
+                        '_hacked_path': 0 }
+        r = HTTPRequest(StringIO(), environment, response)
+        r.other.update(environment)
 
         # we define a Zope3-style default view name, but no
         # corresponding view, no change in behaviour expected
-        defineDefaultViewName('index.html', DummyContent)
+        defineDefaultViewName('index.html', IDummyContent)
         r.traverse('foo')
         self.assertEqual( r.URL, '/foo/dummy_view' )
         self.assertEqual( r.response.base, '/foo/' )
@@ -129,22 +154,25 @@
         environment = { 'URL': '',
                         'PARENTS': [self.site],
                         'REQUEST_METHOD': 'GET',
+                        'SERVER_PORT': '80',
+                        'REQUEST_METHOD': 'GET',
                         'steps': [],
-                        '_hacked_path': 0,
-                        'response': response }
-        r = BaseRequest(environment)
+                        'SERVER_NAME': 'localhost',
+                        '_hacked_path': 0 }
+        r = HTTPRequest(StringIO(), environment, response)
+        r.other.update(environment)
 
         # we define a Zope3-style default view name for which a view
-        # actually exists (double registration needed because we test
-        # with BaseRequest, but Five checks for IBrowserRequest as
-        # well)
-        defineDefaultViewName('index.html', DummyContent)
-        zope.component.provideAdapter(
-            DummyView, (DummyContent, BaseRequest), IBrowserView,
-            'index.html')
-        zope.component.provideAdapter(
-            DummyView, (DummyContent, IBrowserRequest), IBrowserView,
-            'index.html')
+        # actually exists
+        defineDefaultViewName('index.html', IDummyContent)
+        try:
+            from zope.component import provideAdapter
+            provideAdapter(DummyView, (DummyContent, IBrowserRequest),
+                           IBrowserView, 'index.html')
+        except ImportError:
+            # BBB for Zope 2.8
+            from zope.app.tests import ztapi
+            ztapi.browserView(IDummyContent, 'index.html', DummyView)
 
         r.traverse('foo')
         self.assertEqual( r.URL, '/foo/index.html' )



More information about the Checkins mailing list