[Checkins] SVN: z3c.template/trunk/ Use z3c.pt.compat compatibility layer to allow use of z3c.pt.

Malthe Borch mborch at gmail.com
Sat Sep 13 16:05:42 EDT 2008


Log message for revision 91128:
  Use z3c.pt.compat compatibility layer to allow use of z3c.pt.

Changed:
  U   z3c.template/trunk/CHANGES.txt
  U   z3c.template/trunk/buildout.cfg
  U   z3c.template/trunk/setup.py
  U   z3c.template/trunk/src/z3c/template/README.txt
  D   z3c.template/trunk/src/z3c/template/macro.py
  U   z3c.template/trunk/src/z3c/template/template.py
  U   z3c.template/trunk/src/z3c/template/tests.py
  U   z3c.template/trunk/src/z3c/template/zcml.txt

-=-
Modified: z3c.template/trunk/CHANGES.txt
===================================================================
--- z3c.template/trunk/CHANGES.txt	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/CHANGES.txt	2008-09-13 20:05:41 UTC (rev 91128)
@@ -5,6 +5,8 @@
 after 1.1.0
 -----------
 
+* Allow use of ``z3c.pt`` using ``z3c.pt.compat`` compatibility later.
+
 * forward the template kwargs to the options of the macro
 
 1.1.0 (2007-10-08)

Modified: z3c.template/trunk/buildout.cfg
===================================================================
--- z3c.template/trunk/buildout.cfg	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/buildout.cfg	2008-09-13 20:05:41 UTC (rev 91128)
@@ -5,3 +5,8 @@
 [test]
 recipe = zc.recipe.testrunner
 eggs = z3c.template [test]
+environment = test-environment
+
+[test-environment]
+Z3C_PT_DEBUG = False
+Z3C_PT_CACHE = False

Modified: z3c.template/trunk/setup.py
===================================================================
--- z3c.template/trunk/setup.py	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/setup.py	2008-09-13 20:05:41 UTC (rev 91128)
@@ -54,18 +54,20 @@
     package_dir = {'':'src'},
     namespace_packages = ['z3c'],
     extras_require = dict(
-        test = ['zope.app.testing', 'zope.testing'],
+        test = ['zope.app.testing',
+                'zope.testing',
+                'lxml>=2.1.1',
+                'z3c.pt'],
         ),
     install_requires = [
         'setuptools',
-        'zope.app.pagetemplate',
         'zope.component',
         'zope.configuration',
         'zope.interface',
         'zope.pagetemplate',
         'zope.publisher',
         'zope.schema',
-        'zope.tal',
+        'z3c.pt.compat [zpt]',
         ],
     include_package_data = True,
     zip_safe = False,

Modified: z3c.template/trunk/src/z3c/template/README.txt
===================================================================
--- z3c.template/trunk/src/z3c/template/README.txt	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/src/z3c/template/README.txt	2008-09-13 20:05:41 UTC (rev 91128)
@@ -88,8 +88,8 @@
   >>> template = component.getMultiAdapter((view, request),
   ...     interfaces.IPageTemplate)
   >>> template
-  <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object at ...>
-
+  <z3c.pt.compat.ViewPageTemplateFile object at ...>
+  
 Now that we have a registered layout template for the default layer we can
 call our view again.
 
@@ -116,7 +116,7 @@
 
 and a view:
 
-  >>> from zope.app.pagetemplate import ViewPageTemplateFile
+  >>> from z3c.pt.compat import ViewPageTemplateFile
   >>> class MyViewWithTemplate(BrowserPage):
   ...     zope.interface.implements(IMyView)
   ...     template = ViewPageTemplateFile(viewContent)
@@ -169,7 +169,7 @@
   >>> layout = component.getMultiAdapter(
   ...     (view2, request), interfaces.ILayoutTemplate)
   >>> layout
-  <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile ...>
+  <z3c.pt.compat.ViewPageTemplateFile ...>
 
 Now that we have a registered layout template for the default layer we can
 call our view again.

Deleted: z3c.template/trunk/src/z3c/template/macro.py
===================================================================
--- z3c.template/trunk/src/z3c/template/macro.py	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/src/z3c/template/macro.py	2008-09-13 20:05:41 UTC (rev 91128)
@@ -1,47 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2005 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""
-$Id$
-"""
-__docformat__ = "reStructuredText"
-
-from StringIO import StringIO
-
-from zope.tal.talinterpreter import TALInterpreter
-
-
-class Macro(object):
-    """Provides a single macro from a template for rendering."""
-
-    def __init__(self, template, macroName, view, request, contentType):
-        self.template = template
-        self.macroName = macroName
-        self.view = view
-        self.request = request
-        self.contentType = contentType
-
-    def __call__(self, *args, **kwargs):
-        program = self.template.macros[self.macroName]
-        output = StringIO(u'')
-        namespace = self.template.pt_getContext(
-                        self.view, self.request, options=kwargs)
-        context = self.template.pt_getEngineContext(namespace)
-        TALInterpreter(program, None,
-                       context, output, tal=True, showtal=False,
-                       strictinsert=0, sourceAnnotations=False)()
-        if not self.request.response.getHeader("Content-Type"):
-            self.request.response.setHeader("Content-Type",
-                                            self.contentType)
-        return output.getvalue()
-

Modified: z3c.template/trunk/src/z3c/template/template.py
===================================================================
--- z3c.template/trunk/src/z3c/template/template.py	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/src/z3c/template/template.py	2008-09-13 20:05:41 UTC (rev 91128)
@@ -15,14 +15,25 @@
 $Id$
 """
 
-import zope.component
+from zope import component
 from zope.pagetemplate.interfaces import IPageTemplate
-from zope.app.pagetemplate import ViewPageTemplateFile
 
+from z3c.pt import compat
 from z3c.template import interfaces
-from z3c.template.macro import Macro
 
+class Macro(object):
+    def __init__(self, template, macroName, view, request, contentType):
+        self.template = template
+        self.macroName = macroName
+        self.view = view
+        self.request = request
+        self.contentType = contentType
 
+    def __call__(self, **kwargs):
+        render = compat.bind_macro(
+            self.template, self.view, self.request, self.macroName)
+        return render(content_type=self.contentType, **kwargs)
+        
 class TemplateFactory(object):
     """Template factory."""
 
@@ -31,16 +42,15 @@
     def __init__(self, filename, contentType, macro=None):
         self.macro = macro
         self.contentType = contentType
-        self.template = ViewPageTemplateFile(filename,
+        self.template = compat.ViewPageTemplateFile(filename,
             content_type=contentType)
 
     def __call__(self, view, request):
         if self.macro is None:
             return self.template
-        return Macro(self.template, self.macro, view, request,
-            self.contentType)
+        return Macro(
+            self.template, self.macro, view, request, self.contentType)
 
-
 class BoundViewTemplate(object):
     def __init__(self, pt, ob):
         object.__setattr__(self, 'im_func', pt)
@@ -59,7 +69,6 @@
     def __repr__(self):
         return "<BoundViewTemplate of %r>" % self.im_self
 
-
 class ViewTemplate(object):
 
     def __init__(self, provides=IPageTemplate, name=u''):
@@ -67,7 +76,7 @@
         self.name = name
 
     def __call__(self, instance, *args, **keywords):
-        template = zope.component.getMultiAdapter(
+        template = component.getMultiAdapter(
                 (instance, instance.request), self.provides, name=self.name)
         return template(instance, *args, **keywords)
 

Modified: z3c.template/trunk/src/z3c/template/tests.py
===================================================================
--- z3c.template/trunk/src/z3c/template/tests.py	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/src/z3c/template/tests.py	2008-09-13 20:05:41 UTC (rev 91128)
@@ -17,31 +17,42 @@
 __docformat__ = "reStructuredText"
 
 import unittest
+import itertools
 
 from zope.testing import doctest
 from zope.testing.doctestunit import DocFileSuite
 from zope.app.testing import setup
+from zope.configuration import xmlconfig
 
+import z3c.pt.compat
 
 def setUp(test):
     root = setup.placefulSetUp(site=True)
     test.globs['root'] = root
 
-
 def tearDown(test):
     setup.placefulTearDown()
 
+def setUpZPT(suite):
+    z3c.pt.compat.config.disable()
+    setUp(suite)
+    
+def setUpZ3CPT(suite):
+    z3c.pt.compat.config.enable()
+    setUp(suite)
+    xmlconfig.XMLConfig('configure.zcml', z3c.pt)()
 
 def test_suite():
-    return unittest.TestSuite((
+    tests = ((
         DocFileSuite('README.txt',
             setUp=setUp, tearDown=tearDown,
             optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
             ),
         DocFileSuite('zcml.txt', setUp=setUp, tearDown=tearDown,
-            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,),
-        ))
+            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,)
+        ) for setUp in (setUpZPT, setUpZ3CPT,))
 
+    return unittest.TestSuite(itertools.chain(*tests))
 
 if __name__ == '__main__':
     unittest.main(defaultTest='test_suite')

Modified: z3c.template/trunk/src/z3c/template/zcml.txt
===================================================================
--- z3c.template/trunk/src/z3c/template/zcml.txt	2008-09-13 19:56:22 UTC (rev 91127)
+++ z3c.template/trunk/src/z3c/template/zcml.txt	2008-09-13 20:05:41 UTC (rev 91128)
@@ -18,7 +18,7 @@
 
   >>> import os, tempfile
   >>> temp_dir = tempfile.mkdtemp()
-  >>> file = os.path.join(temp_dir, 'file.pt')
+  >>> file = os.path.join(temp_dir, 'content.pt')
   >>> open(file, 'w').write('''<div>content</div>''')
 
 and a interface
@@ -67,7 +67,7 @@
 and check them:
 
   >>> template
-  <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object ...>
+  <z3c.pt.compat.ViewPageTemplateFile object ...>
 
   >>> print template(view)
   <div>content</div>
@@ -78,7 +78,7 @@
 
 Define a layout template
 
-  >>> file = os.path.join(temp_dir, 'file.pt')
+  >>> file = os.path.join(temp_dir, 'layout.pt')
   >>> open(file, 'w').write('''<div>layout</div>''')
 
 and register them as a layout template within the ``z3c:layout`` directive:
@@ -102,7 +102,7 @@
 and check them:
 
   >>> layout
-  <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object ...>
+  <z3c.pt.compat.ViewPageTemplateFile object ...>
 
   >>> print layout(view)
   <div>layout</div>



More information about the Checkins mailing list