[Checkins] SVN: z3c.reload/trunk/ * Implemented support for viewlets and pagelets.
Stephan Richter
srichter at cosmos.phy.tufts.edu
Tue Aug 12 02:22:05 EDT 2008
Log message for revision 89695:
* Implemented support for viewlets and pagelets.
Changed:
_U z3c.reload/trunk/
U z3c.reload/trunk/setup.py
_U z3c.reload/trunk/src/
U z3c.reload/trunk/src/z3c/reload/reload.py
U z3c.reload/trunk/src/z3c/reload/subscriber.py
U z3c.reload/trunk/src/z3c/reload/tests/application.zcml
U z3c.reload/trunk/src/z3c/reload/tests/dynamic.py
U z3c.reload/trunk/src/z3c/reload/tests/dynamic_orig.py
U z3c.reload/trunk/src/z3c/reload/tests/ftesting.zcml
A z3c.reload/trunk/src/z3c/reload/tests/layout.pt
A z3c.reload/trunk/src/z3c/reload/tests/pagelet.pt
U z3c.reload/trunk/src/z3c/reload/tests/reload.txt
A z3c.reload/trunk/src/z3c/reload/tests/vm.pt
-=-
Property changes on: z3c.reload/trunk
___________________________________________________________________
Name: svn:ignore
+ .installed.cfg
bin
develop-eggs
parts
Modified: z3c.reload/trunk/setup.py
===================================================================
--- z3c.reload/trunk/setup.py 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/setup.py 2008-08-12 06:22:04 UTC (rev 89695)
@@ -63,12 +63,14 @@
),
install_requires = [
'setuptools',
+ 'z3c.pagelet',
+ 'zope.app.pagetemplate',
+ 'zope.app.publisher',
'zope.component',
'zope.configuration',
'zope.interface',
'zope.publisher',
- 'zope.app.pagetemplate',
- 'zope.app.publisher'
+ 'zope.viewlet',
],
include_package_data = True,
zip_safe = False,
Property changes on: z3c.reload/trunk/src
___________________________________________________________________
Name: svn:ignore
+ z3c.reload.egg-info
Modified: z3c.reload/trunk/src/z3c/reload/reload.py
===================================================================
--- z3c.reload/trunk/src/z3c/reload/reload.py 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/reload.py 2008-08-12 06:22:04 UTC (rev 89695)
@@ -1,10 +1,16 @@
import sys
from zope.app.pagetemplate.simpleviewclass import simple as SimplePTPage
from zope.app.publisher.browser.viewmeta import simple as SimplePage
+from zope.publisher.browser import BrowserPage
+from zope.viewlet import viewlet, manager
+from z3c.pagelet.browser import BrowserPagelet
from z3c.reload import BLATHER
-simple_view_classes = (SimplePTPage, SimplePage)
+simple_view_classes = (
+ SimplePTPage, SimplePage, BrowserPage,
+ viewlet.ViewletBase, manager.ViewletManagerBase,
+ BrowserPagelet)
class Reloader(object):
@@ -40,7 +46,10 @@
new_view = real_view # just use the old view
self.__sanitize_bases(new_view)
- new_view.__init__(self, *args, **kw)
+ # This is generally not the right thing to do, but should work in this
+ # limited case.
+ for base in self.__class__.__bases__[1:]:
+ base.__init__(self, *args, **kw)
def __sanitize_bases(self, cls):
"""Make sure that the bases of a class are in the scope.
@@ -72,7 +81,6 @@
def install_reloader(view_class):
"""Install the Reloader mixin on view_class."""
- assert view_class.__bases__[-1] in simple_view_classes
if BLATHER:
print >> sys.stderr, 'Reloader installed for', view_class.__bases__[0]
view_class.__bases__ = (Reloader, ) + view_class.__bases__
Modified: z3c.reload/trunk/src/z3c/reload/subscriber.py
===================================================================
--- z3c.reload/trunk/src/z3c/reload/subscriber.py 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/subscriber.py 2008-08-12 06:22:04 UTC (rev 89695)
@@ -16,9 +16,9 @@
A `simple` view is one that subclasses one of simple_view_classes.
"""
if not (isinstance(reg, AdapterRegistration) and
- len(reg.required) > 0 and
- reg.required[-1] is not None and
- reg.required[-1].isOrExtends(IRequest)):
+ len(reg.required) > 1 and
+ reg.required[1] is not None and
+ reg.required[1].isOrExtends(IRequest)):
return False # this registration does not appear to be a view
return (type(reg.factory) == type and
@@ -27,7 +27,6 @@
def reload_enabled_for(view_class):
"""Return True if view_class should be made reloadable."""
- assert view_class.__bases__[-1] in simple_view_classes
real_view = view_class.__bases__[0]
if real_view in enabled_classes:
return True
Modified: z3c.reload/trunk/src/z3c/reload/tests/application.zcml
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/application.zcml 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/tests/application.zcml 2008-08-12 06:22:04 UTC (rev 89695)
@@ -11,6 +11,9 @@
<include package="zope.app.publisher" file="meta.zcml" />
<include package="zope.app.security" file="meta.zcml" />
<include package="zope.securitypolicy" file="meta.zcml" />
+ <include package="zope.viewlet" file="meta.zcml" />
+ <include package="z3c.pagelet" file="meta.zcml" />
+ <include package="z3c.template" file="meta.zcml" />
<include package="z3c.reload" file="meta.zcml" />
<include package="zc.configuration" file="meta.zcml" />
@@ -32,11 +35,16 @@
<include package="zope.app.wsgi" />
<include package="zope.annotation" />
<include package="zope.component" />
+ <include package="zope.contentprovider" />
<include package="zope.location" />
<include package="zope.publisher" />
<include package="zope.securitypolicy" />
<include package="zope.traversing" />
<include package="zope.traversing.browser" />
+ <include package="zope.viewlet" />
+
+ <include package="z3c.pagelet" />
+
<include package="z3c.reload" />
<securityPolicy
Modified: z3c.reload/trunk/src/z3c/reload/tests/dynamic.py
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/dynamic.py 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/tests/dynamic.py 2008-08-12 06:22:04 UTC (rev 89695)
@@ -1,6 +1,7 @@
+import zope.interface
from zope.publisher.browser import BrowserView
+from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
-
class SomeNumberView(BrowserView):
def __init__(self, context, request):
@@ -17,3 +18,25 @@
def __call__(self):
return '3001'
+
+
+class NumbersViewletManager(object):
+
+ number = '2001'
+
+ def render(self):
+ res = u'VM: %s\n' %self.number
+ return res + u'\n'.join([viewlet.render() for viewlet in self.viewlets])
+
+class NumberViewlet(object):
+
+ number = '2001'
+
+ def render(self):
+ return self.number
+
+
+class NumberPagelet(object):
+ template = ViewPageTemplateFile('pagelet.pt')
+
+ number = '2001'
Modified: z3c.reload/trunk/src/z3c/reload/tests/dynamic_orig.py
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/dynamic_orig.py 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/tests/dynamic_orig.py 2008-08-12 06:22:04 UTC (rev 89695)
@@ -1,6 +1,7 @@
+import zope.interface
from zope.publisher.browser import BrowserView
+from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
-
class SomeNumberView(BrowserView):
def __init__(self, context, request):
@@ -17,3 +18,25 @@
def __call__(self):
return '3001'
+
+
+class NumbersViewletManager(object):
+
+ number = '2001'
+
+ def render(self):
+ res = u'VM: %s\n' %self.number
+ return res + u'\n'.join([viewlet.render() for viewlet in self.viewlets])
+
+class NumberViewlet(object):
+
+ number = '2001'
+
+ def render(self):
+ return self.number
+
+
+class NumberPagelet(object):
+ template = ViewPageTemplateFile('pagelet.pt')
+
+ number = '2001'
Modified: z3c.reload/trunk/src/z3c/reload/tests/ftesting.zcml
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/ftesting.zcml 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/tests/ftesting.zcml 2008-08-12 06:22:04 UTC (rev 89695)
@@ -23,4 +23,38 @@
class=".dynamic.ThirdNumberView"
permission="zope.Public" />
+ <!-- Viewlet Testing -->
+
+ <viewletManager
+ name="numbers"
+ class=".dynamic.NumbersViewletManager"
+ permission="zope.Public"
+ />
+
+ <viewlet
+ name="2001"
+ class=".dynamic.NumberViewlet"
+ permission="zope.Public"
+ />
+
+ <page
+ for="zope.traversing.interfaces.IContainmentRoot"
+ name="vm.html"
+ template="vm.pt"
+ permission="zope.Public"
+ />
+
+ <!-- Pagelet Testing -->
+
+ <z3c:pagelet
+ for="zope.traversing.interfaces.IContainmentRoot"
+ name="pagelet.html"
+ class=".dynamic.NumberPagelet"
+ permission="zope.Public"
+ />
+
+ <z3c:layout
+ template="layout.pt"
+ />
+
</configure>
Added: z3c.reload/trunk/src/z3c/reload/tests/layout.pt
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/layout.pt (rev 0)
+++ z3c.reload/trunk/src/z3c/reload/tests/layout.pt 2008-08-12 06:22:04 UTC (rev 89695)
@@ -0,0 +1,3 @@
+<owrap>
+ <tal:block replace="structure provider:pagelet" />
+</owrap>
Property changes on: z3c.reload/trunk/src/z3c/reload/tests/layout.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: z3c.reload/trunk/src/z3c/reload/tests/pagelet.pt
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/pagelet.pt (rev 0)
+++ z3c.reload/trunk/src/z3c/reload/tests/pagelet.pt 2008-08-12 06:22:04 UTC (rev 89695)
@@ -0,0 +1 @@
+<div tal:replace="view/number" />
Property changes on: z3c.reload/trunk/src/z3c/reload/tests/pagelet.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: z3c.reload/trunk/src/z3c/reload/tests/reload.txt
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/reload.txt 2008-08-12 06:00:58 UTC (rev 89694)
+++ z3c.reload/trunk/src/z3c/reload/tests/reload.txt 2008-08-12 06:22:04 UTC (rev 89695)
@@ -28,7 +28,24 @@
<BLANKLINE>
3001
+Here is a viewlet manager and a viewlet:
+ >>> print http("GET /vm.html HTTP/1.1\n", handle_errors=False)
+ HTTP/1.1 200 Ok
+ ...
+ VM: 2001
+ 2001
+
+Finally a pagelet:
+
+ >>> print http("GET /pagelet.html HTTP/1.1\n", handle_errors=False)
+ HTTP/1.1 200 Ok
+ ...
+ <owrap>
+ 2001
+ </owrap>
+
+
Modification
------------
@@ -66,3 +83,24 @@
Content-Type: text/plain
<BLANKLINE>
3123
+
+Here is a viewlet manager and a viewlet:
+
+ >>> replace('2001', '2123')
+
+ >>> print http("GET /vm.html HTTP/1.1\n", handle_errors=False)
+ HTTP/1.1 200 Ok
+ ...
+ VM: 2123
+ 2123
+
+Let's now make sure a pagelet gets also reloaded properly:
+
+ >>> replace('2001', '2123')
+
+ >>> print http("GET /pagelet.html HTTP/1.1\n", handle_errors=False)
+ HTTP/1.1 200 Ok
+ ...
+ <owrap>
+ 2123
+ </owrap>
Added: z3c.reload/trunk/src/z3c/reload/tests/vm.pt
===================================================================
--- z3c.reload/trunk/src/z3c/reload/tests/vm.pt (rev 0)
+++ z3c.reload/trunk/src/z3c/reload/tests/vm.pt 2008-08-12 06:22:04 UTC (rev 89695)
@@ -0,0 +1 @@
+<p tal:replace="provider:numbers" />
Property changes on: z3c.reload/trunk/src/z3c/reload/tests/vm.pt
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list