[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