[Checkins] SVN: zope.browserzcml2/trunk/src/zope/browserzcml2/ Added test and ftest for ZPT accessing view class method

Philipp von Weitershausen philikon at philikon.de
Fri Apr 21 16:06:27 EDT 2006


Log message for revision 67257:
  Added test and ftest for ZPT accessing view class method
  

Changed:
  U   zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt
  U   zope.browserzcml2/trunk/src/zope/browserzcml2/ftest.txt
  U   zope.browserzcml2/trunk/src/zope/browserzcml2/ftesting.zcml
  U   zope.browserzcml2/trunk/src/zope/browserzcml2/ftests.py
  A   zope.browserzcml2/trunk/src/zope/browserzcml2/test2.pt
  U   zope.browserzcml2/trunk/src/zope/browserzcml2/tests.py

-=-
Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt	2006-04-21 20:06:27 UTC (rev 67257)
@@ -150,7 +150,31 @@
   >>> page()
   u"Hi, the name's MacGyver.\n"
 
+Page Templates bound to pages this way can also make use of auxiliary
+view methods on the page class:
 
+  >>> class JackDaltonTemplatePage(zope.formlib.Page):
+  ...     __call__ = ViewPageTemplateFile('test2.pt')
+  ...     def getName(self):
+  ...         return u'Jack Dalton'
+
+  >>> run_config("""
+  ... <browser2:page
+  ...     for="*"
+  ...     name="viewmethodpage.html"
+  ...     factory="zope.browserzcml2.README.JackDaltonTemplatePage"
+  ...     permission="zope.Public"
+  ...     />
+  ... """)
+
+  >>> page = zope.component.getMultiAdapter((object(), request),
+  ...                                       name=u'viewmethodpage.html')
+  >>> page #doctest: +ELLIPSIS
+  <zope.browserzcml2.README.JackDaltonTemplatePage object at ...>
+  >>> page()
+  u'My friend is Jack Dalton.\n'
+
+
 Pages from Page Templates
 -------------------------
 

Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/ftest.txt
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/ftest.txt	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/ftest.txt	2006-04-21 20:06:27 UTC (rev 67257)
@@ -76,7 +76,16 @@
   >>> print browser.contents
   Hi, the name's MacGyver.
 
+More than often, these Page Templates also want to access auxiliary
+methods of the page class, like this one:
 
+  >>> browser = Browser('http://localhost/bz2-viewmethodpage.html')
+  >>> print browser.headers['status']
+  200 Ok
+  >>> print browser.contents
+  My friend is Jack Dalton.
+
+
 Pages from templates
 --------------------
 

Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/ftesting.zcml
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/ftesting.zcml	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/ftesting.zcml	2006-04-21 20:06:27 UTC (rev 67257)
@@ -38,6 +38,13 @@
       permission="zope.Public"
       />
 
+  <browser2:page
+      for="*"
+      name="bz2-viewmethodpage.html"
+      factory="zope.browserzcml2.ftests.JackDaltonTemplatePage"
+      permission="zope.Public"
+      />
+
   <browser2:pageTemplate
       for="*"
       name="bz2-pagetemplate.html"

Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/ftests.py
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/ftests.py	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/ftests.py	2006-04-21 20:06:27 UTC (rev 67257)
@@ -32,6 +32,11 @@
 class MacGyverTemplatePage(zope.formlib.Page):
     __call__ = ViewPageTemplateFile('test.pt')
 
+class JackDaltonTemplatePage(zope.formlib.Page):
+    __call__ = ViewPageTemplateFile('test2.pt')
+    def getName(self):
+        return u'Jack Dalton'
+
 class PhoenixPages(object):
     macgyver = ViewPageTemplateFile('test.pt')
     def pete(self):

Added: zope.browserzcml2/trunk/src/zope/browserzcml2/test2.pt
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/test2.pt	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/test2.pt	2006-04-21 20:06:27 UTC (rev 67257)
@@ -0,0 +1 @@
+My friend is <span tal:replace="view/getName" />.
\ No newline at end of file


Property changes on: zope.browserzcml2/trunk/src/zope/browserzcml2/test2.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/tests.py
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/tests.py	2006-04-21 20:05:25 UTC (rev 67256)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/tests.py	2006-04-21 20:06:27 UTC (rev 67257)
@@ -21,6 +21,7 @@
 import zope.app.publisher.browser
 from zope.testing import doctest, module
 from zope.configuration import xmlconfig
+from zope.app.traversing.adapters import DefaultTraversable
 
 __docformat__ = "reStructuredText"
 
@@ -38,13 +39,16 @@
 
 _context = None
 def setUp(test):
-    global _context
-    _context = xmlconfig.file('meta.zcml', zope.browserzcml2)
-    xmlconfig.file('meta.zcml', zope.app.publisher.browser, _context)
     test.globs['run_config'] = run_config
     module.setUp(test, 'zope.browserzcml2.README')
     zope.component.testing.setUp(test)
 
+    global _context
+    _context = xmlconfig.file('meta.zcml', zope.browserzcml2)
+    xmlconfig.file('meta.zcml', zope.app.publisher.browser, _context)
+
+    zope.component.provideAdapter(DefaultTraversable, (None,))
+
 def tearDown(test):
     global _context
     _context = None



More information about the Checkins mailing list