[Checkins] SVN: z3c.template/trunk/ Update to z3c.ptcompat 1.0 (and as a result, to the z3c.pt 2.x series).

Malthe Borch mborch at gmail.com
Fri Oct 14 09:53:13 EST 2011


Log message for revision 123094:
  Update to z3c.ptcompat 1.0 (and as a result, to the z3c.pt 2.x series).

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
  U   z3c.template/trunk/src/z3c/template/__init__.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	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/CHANGES.txt	2011-10-14 14:53:12 UTC (rev 123094)
@@ -2,8 +2,8 @@
 CHANGES
 =======
 
-1.2.2 (unreleased)
-------------------
+1.3 (unreleased)
+----------------
 
 - Using Python's ``doctest`` module instead of depreacted
   ``zope.testing.doctest``.

Modified: z3c.template/trunk/buildout.cfg
===================================================================
--- z3c.template/trunk/buildout.cfg	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/buildout.cfg	2011-10-14 14:53:12 UTC (rev 123094)
@@ -4,14 +4,10 @@
 versions = versions
 
 [versions]
-z3c.pt = 1.2.1
-Chameleon = 1.2.13
+z3c.pt = 2.1.4
+z3c.ptcompat = 1.0
+Chameleon = 2.5.2
 
 [test]
 recipe = zc.recipe.testrunner
 eggs = z3c.template [test]
-environment = test-environment
-
-[test-environment]
-CHAMELEON_DEBUG = False
-CHAMELEON_CACHE = False

Modified: z3c.template/trunk/setup.py
===================================================================
--- z3c.template/trunk/setup.py	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/setup.py	2011-10-14 14:53:12 UTC (rev 123094)
@@ -23,7 +23,7 @@
 
 setup (
     name='z3c.template',
-    version = '1.2.2dev',
+    version = '1.3dev',
     author = "Roger Ineichen and the Zope Community",
     author_email = "zope-dev at zope.org",
     description = "A package implementing advanced Page Template patterns.",
@@ -54,9 +54,9 @@
     namespace_packages = ['z3c'],
     extras_require = dict(
         test = ['zope.app.testing',
+                'zope.app.pagetemplate',
                 'zope.testing',
-                'lxml>=2.1.1',
-                'z3c.pt>=1.0b1'],
+                'z3c.ptcompat>=1.0'],
         ),
     install_requires = [
         'setuptools',
@@ -66,7 +66,6 @@
         'zope.pagetemplate',
         'zope.publisher',
         'zope.schema',
-        'z3c.ptcompat [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	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/src/z3c/template/README.txt	2011-10-14 14:53:12 UTC (rev 123094)
@@ -88,7 +88,7 @@
   >>> template = component.getMultiAdapter((view, request),
   ...     interfaces.IPageTemplate)
 
-  >>> from z3c.ptcompat import ViewPageTemplateFile
+  >>> from z3c.template import ViewPageTemplateFile
   >>> isinstance(template, ViewPageTemplateFile)
   True
  
@@ -118,7 +118,7 @@
 
 and a view:
 
-  >>> from z3c.ptcompat import ViewPageTemplateFile
+  >>> from z3c.template import ViewPageTemplateFile
   >>> class MyViewWithTemplate(BrowserPage):
   ...     zope.interface.implements(IMyView)
   ...     template = ViewPageTemplateFile(viewContent)

Modified: z3c.template/trunk/src/z3c/template/__init__.py
===================================================================
--- z3c.template/trunk/src/z3c/template/__init__.py	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/src/z3c/template/__init__.py	2011-10-14 14:53:12 UTC (rev 123094)
@@ -14,3 +14,5 @@
 """
 $Id$
 """
+
+from template import ViewPageTemplateFile

Modified: z3c.template/trunk/src/z3c/template/template.py
===================================================================
--- z3c.template/trunk/src/z3c/template/template.py	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/src/z3c/template/template.py	2011-10-14 14:53:12 UTC (rev 123094)
@@ -17,33 +17,61 @@
 
 from zope import component
 from zope.pagetemplate.interfaces import IPageTemplate
+from zope.pagetemplate.pagetemplate import PageTemplate
 
-from z3c import ptcompat
+try:
+    from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+    ViewPageTemplateFile  # Satisfy pyflakes
+except ImportError:
+    # The package does not require a particular view page template
+    # implementation
+    try:
+        from z3c.pt.pagetemplate import ViewPageTemplateFile
+    except ImportError:
+        raise ImportError("zope.app.pagetemplate or z3c.pt required.")
+
 from z3c.template import interfaces
 
+
 class Macro(object):
-    def __init__(self, template, macroName, view, request, contentType):
-        self.template = template
-        self.macroName = macroName
+    # XXX: We can't use Zope's `TALInterpreter` class directly
+    # because it (obviously) only supports the Zope page template
+    # implementation. As a workaround or trick we use a wrapper
+    # template.
+    wrapper = PageTemplate()
+    wrapper.write(
+        '<metal:main use-macro="python: options[\'macro\']" />'
+        )
+
+    def __init__(self, template, name, view, request, contentType):
+        self.macro = template.macros[name]
+        self.contentType = contentType
         self.view = view
         self.request = request
-        self.contentType = contentType
 
     def __call__(self, **kwargs):
-        render = ptcompat.bind_macro(
-            self.template, self.view, self.request, self.macroName)
-        return render(content_type=self.contentType, **kwargs)
-        
+        kwargs['macro'] = self.macro
+        kwargs.setdefault('view', self.view)
+        kwargs.setdefault('request', self.request)
+        result = self.wrapper(**kwargs)
+
+        if not self.request.response.getHeader("Content-Type"):
+            self.request.response.setHeader(
+                "Content-Type", self.contentType)
+
+        return result
+
+
 class TemplateFactory(object):
     """Template factory."""
 
     template = None
 
     def __init__(self, filename, contentType, macro=None):
+        self.contentType = contentType
+        self.template = ViewPageTemplateFile(
+            filename, content_type=contentType)
         self.macro = macro
-        self.contentType = contentType
-        self.template = ptcompat.ViewPageTemplateFile(filename,
-            content_type=contentType)
 
     def __call__(self, view, request, context=None):
         if self.macro is None:
@@ -51,6 +79,7 @@
         return Macro(
             self.template, self.macro, view, request, self.contentType)
 
+
 class BoundViewTemplate(object):
     def __init__(self, pt, ob):
         object.__setattr__(self, 'im_func', pt)
@@ -69,8 +98,8 @@
     def __repr__(self):
         return "<BoundViewTemplate of %r>" % self.im_self
 
+
 class ViewTemplate(object):
-
     def __init__(self, provides=IPageTemplate, name=u''):
         self.provides = provides
         self.name = name

Modified: z3c.template/trunk/src/z3c/template/tests.py
===================================================================
--- z3c.template/trunk/src/z3c/template/tests.py	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/src/z3c/template/tests.py	2011-10-14 14:53:12 UTC (rev 123094)
@@ -22,9 +22,6 @@
 import itertools
 import unittest
 
-import z3c.ptcompat
-from z3c.ptcompat.testing import OutputChecker
-
 def setUp(test):
     root = setup.placefulSetUp(site=True)
     test.globs['root'] = root
@@ -33,25 +30,27 @@
     setup.placefulTearDown()
 
 def setUpZPT(suite):
-    z3c.ptcompat.config.disable()
     setUp(suite)
 
 def setUpZ3CPT(suite):
-    z3c.ptcompat.config.enable()
     setUp(suite)
-    xmlconfig.XMLConfig('configure.zcml', z3c.pt)()
+    import z3c.ptcompat
+    xmlconfig.XMLConfig('configure.zcml', z3c.ptcompat)()
 
+    # We have to cook this template explicitly, because it's a module
+    # global.
+    from z3c.template.template import Macro
+    Macro.wrapper._cook()
+
+
 def test_suite():
-    checker = OutputChecker(doctest)
     tests = ((
         doctest.DocFileSuite('README.txt',
             setUp=setUp, tearDown=tearDown,
             optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
-            checker=checker,
             ),
         doctest.DocFileSuite('zcml.txt', setUp=setUp, tearDown=tearDown,
             optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
-            checker=checker,
             ),
         ) for setUp in (setUpZPT, setUpZ3CPT,))
 

Modified: z3c.template/trunk/src/z3c/template/zcml.txt
===================================================================
--- z3c.template/trunk/src/z3c/template/zcml.txt	2011-10-14 10:51:07 UTC (rev 123093)
+++ z3c.template/trunk/src/z3c/template/zcml.txt	2011-10-14 14:53:12 UTC (rev 123094)
@@ -66,7 +66,7 @@
 
 and check them:
 
-  >>> from z3c.ptcompat import ViewPageTemplateFile
+  >>> from z3c.template import ViewPageTemplateFile
   >>> isinstance(template, ViewPageTemplateFile)
   True
 



More information about the checkins mailing list