[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