[Checkins] SVN: z3c.hashedresource/trunk/s * move our AbsoluteURL adapter to its own skin

Wolfgang Schnerring wosc at wosc.de
Tue Jun 16 04:30:41 EDT 2009


Log message for revision 101040:
   * move our AbsoluteURL adapter to its own skin
   * split tests into devmode and non-devmode
   * depend on recent enough version of zope.app.publisher, so resources use IAbsoluteURL to determine their URL
  

Changed:
  U   z3c.hashedresource/trunk/setup.py
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/README.txt
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/configure.zcml
  A   z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting-devmode.zcml
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting.zcml
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/interfaces.py
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/testing.py
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/tests/test_hash.py
  U   z3c.hashedresource/trunk/src/z3c/hashedresource/url.py

-=-
Modified: z3c.hashedresource/trunk/setup.py
===================================================================
--- z3c.hashedresource/trunk/setup.py	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/setup.py	2009-06-16 08:30:41 UTC (rev 101040)
@@ -26,14 +26,14 @@
     install_requires=[
         'setuptools',
         'z3c.noop',
+        'zope.app.publisher>=3.8.2',
         'zope.component',
         'zope.interface',
-        'zope.app.publisher',
+        'zope.publisher',
         ],
     extras_require=dict(test=[
         'zope.app.testing',
         'zope.app.zcmlfiles',
-        'zope.publisher',
         'zope.security',
         'zope.site',
         'zope.testbrowser',

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/README.txt
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/README.txt	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/README.txt	2009-06-16 08:30:41 UTC (rev 101040)
@@ -18,3 +18,6 @@
 to restart the server after changing resource files (else browsers will still
 see the old URL unchanged and use their outdated cached versions of the files).
 
+To use this package, include its configure.zcml and use
+`z3c.hashedresource.interfaces.IHashedResourceSkin` or a skin that inherits from
+it.
\ No newline at end of file

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/configure.zcml
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/configure.zcml	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/configure.zcml	2009-06-16 08:30:41 UTC (rev 101040)
@@ -3,8 +3,14 @@
   xmlns:zcml="http://namespaces.zope.org/zcml"
   >
 
-  <include package="z3c.noop"/>
+  <include package="z3c.noop" />
 
+  <utility
+    component=".interfaces.IHashedResourceSkin"
+    provides="zope.publisher.interfaces.browser.IBrowserSkinType"
+    name="z3c.hashedresource"
+    />
+
   <adapter
     factory=".url.HashingURL"
     />

Added: z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting-devmode.zcml
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting-devmode.zcml	                        (rev 0)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting-devmode.zcml	2009-06-16 08:30:41 UTC (rev 101040)
@@ -0,0 +1,8 @@
+<configure
+   xmlns="http://namespaces.zope.org/zope"
+   xmlns:meta="http://namespaces.zope.org/meta"
+   >
+
+  <meta:provides feature="devmode"/>
+  <include file="ftesting.zcml"/>
+</configure>
\ No newline at end of file

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting.zcml
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting.zcml	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/ftesting.zcml	2009-06-16 08:30:41 UTC (rev 101040)
@@ -3,11 +3,12 @@
    xmlns:browser="http://namespaces.zope.org/browser"
    >
 
-
   <include package="zope.app.zcmlfiles" />
   <include package="zope.app.publisher" />
   <include package="z3c.hashedresource" />
 
+  <browser:defaultSkin name="z3c.hashedresource" />
+
   <!-- example resource for testing -->
   <browser:resourceDirectory
     directory="tests/fixture"

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/interfaces.py
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/interfaces.py	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/interfaces.py	2009-06-16 08:30:41 UTC (rev 101040)
@@ -1,6 +1,6 @@
 #############################################################################
 #
-# Copyright (c) 2006-2007 Zope Corporation and Contributors.
+# Copyright (c) 2009 Zope Corporation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -11,11 +11,24 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+"""
 
-from zope.interface import Interface
+$Id$
+"""
+from zope.interface import Interface, alsoProvides
+import zope.publisher.interfaces.browser
 
 
 class IResourceContentsHash(Interface):
 
     def __str__():
         """return a hash of the contents of the resource"""
+
+
+class IHashedResourceSkin(
+    zope.publisher.interfaces.browser.IDefaultBrowserLayer):
+    """marker interface to differentiate our AbsoluteURL registration
+    from the default one in zope.app.publisher."""
+
+alsoProvides(
+    IHashedResourceSkin, zope.publisher.interfaces.browser.IBrowserSkinType)

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/testing.py
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/testing.py	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/testing.py	2009-06-16 08:30:41 UTC (rev 101040)
@@ -15,6 +15,7 @@
 
 $Id: test_directoryresource.py 95447 2009-01-29 16:28:18Z wosc $
 """
+from z3c.hashedresource import interfaces
 import os
 import re
 import tempfile
@@ -32,10 +33,15 @@
     )
 
 HashedResourcesLayer = zope.app.testing.functional.ZCMLLayer(
-    os.path.join(os.path.split(__file__)[0], 'ftesting.zcml'),
+    os.path.join(os.path.dirname(__file__), 'ftesting-devmode.zcml'),
     __name__, 'HashedResourcesLayer', allow_teardown=True)
 
 
+class TestRequest(zope.publisher.browser.TestRequest):
+
+    zope.interface.implements(interfaces.IHashedResourceSkin)
+
+
 class FunctionalTestCase(zope.app.testing.functional.FunctionalTestCase):
 
     layer = HashedResourcesLayer
@@ -52,7 +58,7 @@
         open(os.path.join(self.tmpdir, 'example.txt'), 'w').write('')
         self.dirname = os.path.basename(self.tmpdir)
 
-        self.request = zope.publisher.browser.TestRequest()
+        self.request = TestRequest()
         self.request._vh_root = self.site
         self.directory = zope.app.publisher.browser.directoryresource.DirectoryResourceFactory(
             self.tmpdir, checker, self.dirname)(self.request)

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/tests/test_hash.py
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/tests/test_hash.py	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/tests/test_hash.py	2009-06-16 08:30:41 UTC (rev 101040)
@@ -16,12 +16,20 @@
 $Id: test_directoryresource.py 95447 2009-01-29 16:28:18Z wosc $
 """
 from z3c.hashedresource import hash, testing
+import os
 import unittest
 import zope.component
 
 
+ProductionModeLayer = zope.app.testing.functional.ZCMLLayer(
+    os.path.join(os.path.dirname(testing.__file__), 'ftesting.zcml'),
+    __name__, 'ProductionModeLayer', allow_teardown=True)
+
+
 class CachingContentsHashTest(testing.FunctionalTestCase):
 
+    layer = ProductionModeLayer
+
     def test_production_mode_hash_should_not_change(self):
         zope.component.provideAdapter(
             hash.CachingContentsHash,

Modified: z3c.hashedresource/trunk/src/z3c/hashedresource/url.py
===================================================================
--- z3c.hashedresource/trunk/src/z3c/hashedresource/url.py	2009-06-16 07:33:15 UTC (rev 101039)
+++ z3c.hashedresource/trunk/src/z3c/hashedresource/url.py	2009-06-16 08:30:41 UTC (rev 101040)
@@ -14,11 +14,12 @@
 
 from z3c.hashedresource import interfaces
 from zope.component import adapts
-from zope.interface import implements, implementsOnly
+from zope.interface import implements, implementsOnly, directlyProvides
+from zope.traversing.browser.interfaces import IAbsoluteURL
+import zope.app.publisher.browser.resource
 import zope.app.publisher.interfaces
 import zope.publisher.interfaces.browser
 import zope.traversing.browser.absoluteurl
-import zope.traversing.browser.interfaces
 
 
 class HashingURL(zope.traversing.browser.absoluteurl.AbsoluteURL):
@@ -27,9 +28,9 @@
     a browser to update its cache.
     """
 
-    implementsOnly(zope.traversing.browser.interfaces.IAbsoluteURL)
+    implementsOnly(IAbsoluteURL)
     adapts(zope.app.publisher.interfaces.IResource,
-           zope.publisher.interfaces.browser.IDefaultBrowserLayer)
+           interfaces.IHashedResourceSkin)
 
     def __init__(self, context, request):
         self.context = context
@@ -40,6 +41,11 @@
         if self.name.startswith('++resource++'):
             self.name = self.name[12:]
 
+    def _site_url(self):
+        url = zope.app.publisher.browser.resource.AbsoluteURL(
+            self.context, self.request)()
+        return url.split('/@@/')[0]
+
     def __str__(self):
         hash = str(interfaces.IResourceContentsHash(self.context))
         return "%s/++noop++%s/@@/%s" % (self._site_url(), hash, self.name)



More information about the Checkins mailing list