[Checkins] SVN: zope.app.publisher/trunk/ see CHANGES

Jodok Batlogg jodok.batlogg at lovelysystems.com
Thu Oct 23 12:42:29 EDT 2008


Log message for revision 92506:
  see CHANGES

Changed:
  U   zope.app.publisher/trunk/CHANGES.txt
  U   zope.app.publisher/trunk/setup.py
  U   zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py
  U   zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/test_resource.py

-=-
Modified: zope.app.publisher/trunk/CHANGES.txt
===================================================================
--- zope.app.publisher/trunk/CHANGES.txt	2008-10-23 16:12:46 UTC (rev 92505)
+++ zope.app.publisher/trunk/CHANGES.txt	2008-10-23 16:42:28 UTC (rev 92506)
@@ -2,11 +2,18 @@
 Changes
 =======
 
-3.5.2 (Unreleased)
+3.5.3 (Unreleased)
 ==================
 
 - ...
 
+3.5.2a1 (2008-10-23)
+====================
+
+- Added a hook to specify a different BaseURL for resources. This makes sense
+  if you want to put resources on a Content Delivery Network. All you need to
+  do is to register an named Adapter 'resource' that implements IAbsoluteURL.
+
 3.5.1 (2008-10-13)
 ==================
 

Modified: zope.app.publisher/trunk/setup.py
===================================================================
--- zope.app.publisher/trunk/setup.py	2008-10-23 16:12:46 UTC (rev 92505)
+++ zope.app.publisher/trunk/setup.py	2008-10-23 16:42:28 UTC (rev 92506)
@@ -19,7 +19,7 @@
                     open('CHANGES.txt').read())
 
 setup(name='zope.app.publisher',
-      version = '3.5.2dev',
+      version = '3.5.2a1',
       url='http://pypi.python.org/pypi/zope.app.publisher/',
       author='Zope Corporation and Contributors',
       author_email='zope-dev at zope.org',

Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py	2008-10-23 16:12:46 UTC (rev 92505)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py	2008-10-23 16:42:28 UTC (rev 92506)
@@ -16,6 +16,7 @@
 $Id$
 """
 from zope.component import getMultiAdapter
+from zope.component import queryMultiAdapter
 from zope.component.interfaces import IResource
 from zope.interface import implements
 from zope.traversing.browser.interfaces import IAbsoluteURL
@@ -38,5 +39,11 @@
             name = name[12:]
 
         site = getSite()
-        url = str(getMultiAdapter((site, self.request), IAbsoluteURL))
+        base = queryMultiAdapter((site, self.request), IAbsoluteURL,
+            name="resource")
+        if base is None: 
+            url = str(getMultiAdapter((site, self.request), IAbsoluteURL))
+        else:
+            url = str(base)
+
         return self._createUrl(url, name)

Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/test_resource.py
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/test_resource.py	2008-10-23 16:12:46 UTC (rev 92505)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/test_resource.py	2008-10-23 16:42:28 UTC (rev 92506)
@@ -17,11 +17,15 @@
 """
 import unittest
 
+from zope import component
+
 from zope.publisher.browser import TestRequest
 
+from zope.app.component.interfaces import ISite
 from zope.app.publisher.browser.resource import Resource
 from zope.app.publisher.browser.tests import support
 from zope.app.testing.placelesssetup import PlacelessSetup
+from zope.traversing.browser.interfaces import IAbsoluteURL
 
 
 class TestResource(support.SiteHandler, PlacelessSetup, unittest.TestCase):
@@ -45,7 +49,21 @@
         r.__name__ = 'foo'
         self.assertEquals(r(), 'http://127.0.0.1/x/y/@@/foo')
 
+    def testResourceUrl(self):
+        # fake IAbsoluteURL adapter
+        def resourceBase(site, request):
+            return 'http://cdn.example.com'
+        component.provideAdapter(resourceBase, (ISite, TestRequest), 
+            IAbsoluteURL, 'resource')
 
+        req = TestRequest()
+        r = Resource(req)
+        req._vh_root = support.site
+        r.__parent__ = support.site
+        r.__name__ = 'foo'
+        self.assertEquals(r(), 'http://cdn.example.com/@@/foo')
+
+
 def test_suite():
     return unittest.makeSuite(TestResource)
 



More information about the Checkins mailing list