[z3-checkins] r5253 - in z3/Five/trunk: . tests tests/products/FiveTest

philikon at codespeak.net philikon at codespeak.net
Wed Jun 23 13:28:12 MEST 2004


Author: philikon
Date: Wed Jun 23 13:28:11 2004
New Revision: 5253

Modified:
   z3/Five/trunk/fiveconfigure.py
   z3/Five/trunk/meta.zcml
   z3/Five/trunk/tests/products/FiveTest/browser.py
   z3/Five/trunk/tests/products/FiveTest/configure.zcml
   z3/Five/trunk/tests/test_five.py
Log:
Implement the <browser:pages> complex directive.
I'm surprised how easy this was and how little time it took. Wow.


Modified: z3/Five/trunk/fiveconfigure.py
==============================================================================
--- z3/Five/trunk/fiveconfigure.py	(original)
+++ z3/Five/trunk/fiveconfigure.py	Wed Jun 23 13:28:11 2004
@@ -108,6 +108,31 @@
         args = (new_class,)
         )
 
+# verbatim from Zope3/src/zope/app/publisher/browser/viewmeta.py
+class pages:
+
+    def __init__(self, _context, for_, permission,
+                 layer='default', class_=None,
+                 allowed_interface=None, allowed_attributes=None,
+                 ):
+        self.opts = dict(for_=for_, permission=permission,
+                         layer=layer, class_=class_,
+                         allowed_interface=allowed_interface,
+                         allowed_attributes=allowed_attributes,
+                         )
+
+    def page(self, _context, name, attribute='__call__', template=None,
+             menu=None, title=None):
+        return page(_context,
+                    name=name,
+                    attribute=attribute,
+                    template=template,
+                    menu=menu, title=title,
+                    **(self.opts))
+
+    def __call__(self):
+        return ()
+
 def _handle_for(_context, for_):
     if for_ is not None:
         _context.action(

Modified: z3/Five/trunk/meta.zcml
==============================================================================
--- z3/Five/trunk/meta.zcml	(original)
+++ z3/Five/trunk/meta.zcml	Wed Jun 23 13:28:11 2004
@@ -90,6 +90,19 @@
         handler=".fiveconfigure.page"
         />
 
+    <meta:complexDirective
+        name="pages"
+        schema="zope.app.publisher.browser.metadirectives.IPagesDirective"
+        handler=".fiveconfigure.pages"
+        >
+
+      <meta:subdirective
+          name="page"
+          schema="zope.app.publisher.browser.metadirectives.IPagesPageSubdirective"
+          />
+
+    </meta:complexDirective>
+
   </meta:directives>
 
   <meta:directives namespace="http://namespaces.zope.org/five">

Modified: z3/Five/trunk/tests/products/FiveTest/browser.py
==============================================================================
--- z3/Five/trunk/tests/products/FiveTest/browser.py	(original)
+++ z3/Five/trunk/tests/products/FiveTest/browser.py	Wed Jun 23 13:28:11 2004
@@ -7,3 +7,6 @@
         """Docstring"""
         return "The eagle has landed"
 
+    def mouse(self):
+	"""Docstring"""
+	return "The mouse has been eaten by the eagle"""

Modified: z3/Five/trunk/tests/products/FiveTest/configure.zcml
==============================================================================
--- z3/Five/trunk/tests/products/FiveTest/configure.zcml	(original)
+++ z3/Five/trunk/tests/products/FiveTest/configure.zcml	Wed Jun 23 13:28:11 2004
@@ -16,6 +16,22 @@
     permission="zope.ViewManagementScreens"
     />
 
+  <!-- attribute page -->
+  <browser:pages
+    for=".interfaces.ISimpleContent"
+    class=".browser.SimpleContentView"
+    permission="zope.ViewManagementScreens"
+    >
+    <browser:page
+      name="eagle-page.txt"
+      attribute="eagle"
+      />
+    <browser:page
+      name="mouse-page.txt"
+      attribute="mouse"
+      />
+  </browser:pages>
+
   <!-- template/class page -->
   <browser:page
     for=".interfaces.ISimpleContent"

Modified: z3/Five/trunk/tests/test_five.py
==============================================================================
--- z3/Five/trunk/tests/test_five.py	(original)
+++ z3/Five/trunk/tests/test_five.py	Wed Jun 23 13:28:11 2004
@@ -42,6 +42,15 @@
         self.assert_(isinstance(view, SimpleContentView))
         self.assertEquals('The eagle has landed', view())
 
+    def test_pages_view(self):
+        view = self.folder.unrestrictedTraverse('testoid/eagle-page.txt')
+        self.assert_(isinstance(view, SimpleContentView))
+        self.assertEquals('The eagle has landed', view())
+
+        view = self.folder.unrestrictedTraverse('testoid/mouse-page.txt')
+        self.assert_(isinstance(view, SimpleContentView))
+        self.assertEquals('The mouse has been eaten by the eagle', view())
+
     def test_template_view(self):
         view = self.folder.unrestrictedTraverse('testoid/falcon.html')
         self.assert_(isinstance(view, SimpleContentView))


More information about the z3-checkins mailing list