[Checkins] SVN: zope.app.publisher/trunk/src/zope/app/publisher/browser/ extracted URL generation from __call__ into IAbsoluteURL-adapter

Wolfgang Schnerring wosc at wosc.de
Mon Jun 8 08:46:02 EDT 2009


Log message for revision 100748:
  extracted URL generation from __call__ into IAbsoluteURL-adapter
  

Changed:
  U   zope.app.publisher/trunk/src/zope/app/publisher/browser/configure.zcml
  U   zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py
  U   zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/support.py

-=-
Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/configure.zcml
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/configure.zcml	2009-06-08 12:08:25 UTC (rev 100747)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/configure.zcml	2009-06-08 12:46:01 UTC (rev 100748)
@@ -57,6 +57,10 @@
   <allow attributes="get __getitem__" />
 </class>
 
+<adapter
+    factory=".resource.AbsoluteURL"
+    />
+
 <browser:page
     name=""
     for="zope.location.interfaces.ISite"

Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py	2009-06-08 12:08:25 UTC (rev 100747)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/resource.py	2009-06-08 12:46:01 UTC (rev 100748)
@@ -15,26 +15,39 @@
 
 $Id$
 """
+from zope.app.publisher.interfaces import IResource
+from zope.component import adapts
 from zope.component import getMultiAdapter
 from zope.component import queryMultiAdapter
-from zope.interface import implements
+from zope.interface import implements, implementsOnly
 from zope.location import Location
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 from zope.site.hooks import getSite
 from zope.traversing.browser.interfaces import IAbsoluteURL
+import zope.traversing.browser.absoluteurl
 
-from zope.app.publisher.interfaces import IResource
+class Resource(Location):
 
-class Resource(Location):
     implements(IResource)
 
     def __init__(self, request):
         self.request = request
 
-    def _createUrl(self, baseUrl, name):
-        return "%s/@@/%s" % (baseUrl, name)
+    def __call__(self):
+        return str(getMultiAdapter((self, self.request), IAbsoluteURL))
 
-    def __call__(self):
-        name = self.__name__
+
+class AbsoluteURL(zope.traversing.browser.absoluteurl.AbsoluteURL):
+
+    implementsOnly(IAbsoluteURL)
+    adapts(IResource, IDefaultBrowserLayer)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def __str__(self):
+        name = self.context.__name__
         if name.startswith('++resource++'):
             name = name[12:]
 
@@ -46,4 +59,5 @@
         else:
             url = str(base)
 
-        return self._createUrl(url, name)
+        return "%s/@@/%s" % (url, name)
+

Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/support.py
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/support.py	2009-06-08 12:08:25 UTC (rev 100747)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/tests/support.py	2009-06-08 12:46:01 UTC (rev 100748)
@@ -40,6 +40,8 @@
     def setUp(self):
         super(SiteHandler, self).setUp()
         setSite(site)
+        zope.component.provideAdapter(
+            zope.app.publisher.browser.resource.AbsoluteURL)
 
     def tearDown(self):
         setSite()



More information about the Checkins mailing list