[Checkins] SVN: z3c.traverser/trunk/src/z3c/traverser/viewlet/ some
bugs fixed, not ready
Bernd Dorn
bernd.dorn at lovelysystems.com
Wed Apr 18 13:20:35 EDT 2007
Log message for revision 74239:
some bugs fixed, not ready
Changed:
U z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py
U z3c.traverser/trunk/src/z3c/traverser/viewlet/configure.zcml
U z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py
-=-
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py 2007-04-18 16:43:25 UTC (rev 74238)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py 2007-04-18 17:20:34 UTC (rev 74239)
@@ -1,11 +1,13 @@
from zope.traversing.browser import absoluteurl
import zope.component
import urllib
+from zope.security.proxy import removeSecurityProxy
+from zope.publisher.browser import BrowserView
class ViewletAbsoluteURL(absoluteurl.AbsoluteURL):
def __str__(self):
- context = self.context
+ context = removeSecurityProxy(self.context)
request = self.request
# The application URL contains all the namespaces that are at the
@@ -15,10 +17,8 @@
container = getattr(context, 'manager', None)
if container is None:
raise TypeError(absoluteurl._insufficientContext)
-
url = str(zope.component.getMultiAdapter((container, request),
name='absolute_url'))
-
name = self._getContextName(context)
if name is None:
raise TypeError(absoluteurl._insufficientContext)
@@ -39,13 +39,35 @@
class ViewletManagerAbsoluteURL(absoluteurl.AbsoluteURL):
+ def __str__(self):
+ context = self.context
+ request = self.request
+
+ container = getattr(context, '__parent__', None)
+ if container is None:
+ raise TypeError(absoluteurl._insufficientContext)
+ url = str(zope.component.getMultiAdapter((container, request),
+ name='absolute_url'))
+ name = self._getContextName(context)
+ if name is None:
+ raise TypeError(absoluteurl._insufficientContext)
+
+ if name:
+ url += '/' + urllib.quote(name.encode('utf-8'),
+ absoluteurl._safe)
+
+ return url
+
+
def _getContextName(self, context):
name = super(ViewletManagerAbsoluteURL,
self)._getContextName(context)
return u'++manager++' + name
-class ViewletView(object):
+ __call__ = __str__
+class ViewletView(BrowserView):
+
def __call__(self):
self.context.update()
return self.context.render()
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/configure.zcml
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/configure.zcml 2007-04-18 16:43:25 UTC (rev 74238)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/configure.zcml 2007-04-18 17:20:34 UTC (rev 74239)
@@ -54,16 +54,31 @@
<adapter
name="manager"
- provides="zope.traversing.interfaces.ITraversable" for="*"
+ provides="zope.traversing.interfaces.ITraversable"
+ for="zope.publisher.interfaces.browser.IBrowserView"
factory=".namespace.ViewletManagerHandler"
/>
<view
name="manager"
type="zope.interface.Interface"
- provides="zope.traversing.interfaces.ITraversable" for="*"
+ provides="zope.traversing.interfaces.ITraversable"
+ for="zope.publisher.interfaces.browser.IBrowserView"
factory=".namespace.ViewletManagerHandler"/>
+ <adapter
+ name="manager"
+ provides="zope.traversing.interfaces.ITraversable"
+ for="zope.viewlet.interfaces.IViewlet"
+ factory=".namespace.ViewletViewletManagerHandler"
+ />
+
+ <view
+ name="manager"
+ type="zope.interface.Interface"
+ provides="zope.traversing.interfaces.ITraversable"
+ for="zope.viewlet.interfaces.IViewlet"
+ factory=".namespace.ViewletViewletManagerHandler"/>
<adapter
name="viewlet"
@@ -78,10 +93,19 @@
factory=".namespace.ViewletHandler"
/>
+ <adapter
+ name="index.html"
+ for="zope.viewlet.interfaces.IViewlet
+ zope.publisher.interfaces.browser.IBrowserRequest"
+ permission="zope.Public"
+ provides="zope.publisher.interfaces.browser.IBrowserView"
+ factory=".browser.ViewletView"/>
+
+ <!--
<browser:page
for="zope.viewlet.interfaces.IViewlet"
name="index.html"
class=".browser.ViewletView"
permission="zope.Public"/>
-
+ -->
</configure>
\ No newline at end of file
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py 2007-04-18 16:43:25 UTC (rev 74238)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py 2007-04-18 17:20:34 UTC (rev 74239)
@@ -3,6 +3,24 @@
from zope.publisher.interfaces import NotFound
from zope.viewlet.interfaces import IViewletManager
+
+class ViewletViewletManagerHandler(SimpleHandler):
+
+ def __init__(self, context, request=None):
+ self.context = context
+ self.request = request
+
+ def traverse(self, name, ignored):
+ context = self.context.__parent__.__parent__
+ provider = component.queryMultiAdapter(
+ (context, self.request, self.context),
+ IViewletManager, name)
+ if provider is None:
+ raise NotFound(self.context, name, self.request)
+
+ return provider
+
+
class ViewletManagerHandler(SimpleHandler):
def __init__(self, context, request=None):
@@ -10,9 +28,9 @@
self.request = request
def traverse(self, name, ignored):
+ context = self.context.__parent__
provider = component.queryMultiAdapter(
- (self.context.__parent__,
- self.request, self.context),
+ (context, self.request, self.context),
IViewletManager, name)
if provider is None:
raise NotFound(self.context, name, self.request)
More information about the Checkins
mailing list