Five bridges and patches to use Chameleon with Zope.
Project description
Overview
========
This package brings the Chameleon template engine to the Zope application
server.
It works using monkey-patching onto the existing API (specifically,
the ``TALInterpreter`` and ``PageTemplate`` classes). In simple terms,
what the patching does is to replace the TAL interpreter class and
make sure that the so-called "cooking" routine uses the Chameleon
parser and compiler instead of the ``zope.*`` reference
implementation.
Usage
~~~~~
To enable Chameleon, configure the package using ZCML::
<include package="five.pt" />
For more information on Chameleon, see http://www.pagetemplates.org/.
Changelog
=========
2.2.2 (2014-04-15)
------------------
- Fix test.
[davisagli]
2.2.1 (2012-01-08)
~~~~~~~~~~~~~~~~~~
Features:
- Whitespace between attributes is now reduced to a single whitespace
character.
Bugfixes:
- The path traverser now correctly renders callables, applying the
template namespace as keyword arguments. Previously, only the
``request`` name would be passed.
- The content provider expression now correctly applies TAL namespace
data.
- Avoid duplicate HTML decoding. This fixes an issue which was
introduced because newer Chameleon releases decode all expression
inputs by default.
2.2.0 (2011-10-10)
~~~~~~~~~~~~~~~~~~
- Update implementation to use component-based template engine
configuration, plugging directly into the Zope Toolkit framework.
- Declare RepeatItem as public object with allowed subobjects
[leorochael]
- Bump minimum versions of dependencies z3c.pt and sourcecodegen to fix
lp#853731 and lp#848200.
[leorochael]
- Fixed encoding issue with restricted Python expression. The Python
2.4 AST parser does not accept unicode input and the expression
string must be explicitly encoded to a byte string.
[malthe]
2.1.5 (2011-08-11)
~~~~~~~~~~~~~~~~~~
- Reuse template instance on cook.
[malthe]
- Use the template source string available in the ``_text`` attribute
instead of reading the file (again).
[leorochael, malthe]
- Use secure moduler importer for both Zope 2 and 3 templates. This
fixes issue #34.
[malthe]
2.1.4 (2011-07-28)
~~~~~~~~~~~~~~~~~~
- Upgrade to newest Zope integration package.
2.1.3 (2011-07-23)
~~~~~~~~~~~~~~~~~~
- Fixed issue with traversal and dictionary optimization (the
optimization has been removed).
[malthe]
- Fixed compatibility issue with the ``UnauthorizedBinding`` class and
traversal.
[malthe]
2.1.2 (2011-07-21)
~~~~~~~~~~~~~~~~~~
- Wire in restricted python builtins as imports. Previously these were
added to the dynamic context.
[malthe]
- Use the Python expression from the ``z3c.pt`` package for the
trusted page template engine. This difference between this and the
standard Python expression from Chameleon is that the pipe character
(``"|"``) has the meaning of fallback in Chameleon, but not in the
reference ZPT implementation (where it's only available for path
expressions).
[malthe]
2.1.1 (2011-07-15)
~~~~~~~~~~~~~~~~~~
- Added builtins from ``RestrictedPython`` to context for Zope 2
templates.
This fixes name error issues on templates that use one or more
utility function builtins normally available to Python expressions
in restricted mode.
[malthe]
2.1 (2011-07-14)
~~~~~~~~~~~~~~~~
- Point release.
- Use trusted path expression for trusted expression engine.
[malthe]
- Fixed template context issues where a ``request`` would be required
by the path expression compiler but not provided (typically when in
a situation where the user is unauthorized to view content).
[malthe]
2.1-rc1 (2011-07-14)
~~~~~~~~~~~~~~~~~~~~
- Major architectural change.
The package no longer contains own template classes; instead,
patches are made to switch from the reference TAL interpreter to the
Chameleon TAL compiler.
[malthe]
2.0-rc3 (2011-07-07)
~~~~~~~~~~~~~~~~~~~~
- Refactor custom Python expression implementation to use the
``parse`` method. This builds directly on the base implementation
and its behavior.
[malthe]
2.0-rc2 (2011-05-24)
~~~~~~~~~~~~~~~~~~~~
- Have the base template class implement ``IPageTemplate`` from
``zope.pagetemplate``. This interface is relied on for a number of
adapter registrations and the missing interface declaration affects
packages such as ``plone.caching``.
[malthe]
- Set default reload mode to the Zope 2 application server
configuration's ``debug_mode`` value.
[malthe]
2.0-rc1 (2011-02-28)
~~~~~~~~~~~~~~~~~~~~
- Update to Chameleon 2.0.
This release includes many changes and is a complete rewrite of the
1.x series.
Note that Python 2.5+ is now required.
[malthe]
- Python-expressions are now subject to access-control security.
[malthe]
1.3.3 - 2010-09-30
~~~~~~~~~~~~~~~~~~
- Apply patches at import time instead of product initialisation.
[wichert]
1.3.2 - 2010-09-29
~~~~~~~~~~~~~~~~~~
- Add a same_type method to the default namespace.
[wichert]
1.3.1 - 2010-09-23
~~~~~~~~~~~~~~~~~~
- Added support for eager loading (environment variable
``CHAMELEON_EAGER``). This flag should be passed only in development
mode and will reveal any templates which do not parse.
[malthe]
1.3 - 2010-09-08
~~~~~~~~~~~~~~~~
- Added support for ``PageTemplate`` and
``ZopePageTemplate``.
[malthe]
1.2 - 2010-08-30
~~~~~~~~~~~~~~~~
- Fixed acquisition-wrapping issue: we need to wrap with the parent to
avoid a pair of template objects (original and patched).
1.1 - 2010-05-15
~~~~~~~~~~~~~~~~~
- Add DateTime to the base context. Fixes problems with certain ZMI pages.
[wichert]
1.0 - 2010-05-13
~~~~~~~~~~~~~~~~~
- If template is not an acquirer, wrap it implicitly. [malthe]
- Removed unused ``ViewletManager`` ZCML handler. [malthe]
0.10 - 2010-04-20
~~~~~~~~~~~~~~~~~
- Improve five.grok support [fretin]
- Check if templates are acquisition-aware before trying to wrap them. This
fixes problems with METAL macros in some ZMI pages. [wichert]
0.9 - 2010-04-14
~~~~~~~~~~~~~~~~
- Basic support for five.grok templates. [wichert]
0.8 - 2010-01-05
~~~~~~~~~~~~~~~~
- Fixed some calling convention oddity that would result in the view
instance being passed doubly as the template arguments.
0.7 - 2009-05-20
~~~~~~~~~~~~~~~~
- Default encoding of the base template set to UTF-8. [malthe]
- Update to latest Chameleon. [malthe]
- Patch ``macros`` attribute. [malthe]
0.6 - 2009-04-06
~~~~~~~~~~~~~~~~
- Avoid another case of unconditionally attempting to Acquisition wrap
template files. We do have an interface check for this. [hannosch]
0.5 - 2009-02-17
~~~~~~~~~~~~~~~~
- Added test function to template context. [malthe]
- Fixed edge-case (special case?) where the view of a
ViewPageTemplateFile is really only the view for a view. [malthe]
- Added patch for ``Products.PageTemplates.PageTemplateFile``. [malthe]
- Rework the "full namespace provided to path expression" change introduced
in 0.3. We no longer call the expensive locals() function but construct a
minimal namespace with the context and request ourselves. [hannosch]
- If the ``__get__`` method is called uninstantiated, just return the
class itself. [malthe]
five.pt 0.4 (released 2/13/2009)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Fixed issue where the ``template`` parameter to a viewlet manager
directive was effectively ignored. [malthe]
- Fixed acquisition-wrapping issue with the (patched) bound template
class (could cause infinite loop due to cyclic acquisition
chain). [malthe]
- Moved evaluate_path and evaluate_exists over to ``z3c.pt``, adding
support for global ``path()`` and ``exists()`` functions for use in
``python:`` expressions to it (LP #317967). [sidnei]
five.pt 0.3 (released 12/17/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Use bobo traversal if ``OFS.interfaces.ITraversable`` interface is
provided. [malthe]
- Adjusted the path expression to provide the full namespace to the render
function and not just the request. This matches Zope2 behavior. [hannosch]
five.pt 0.2 (released 11/29/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- From Zope 2.12 onwards, do not acquisition-wrap content
provider. [malthe]
- Split out CMF-related code to separate package. [malthe]
- Compatibility changes to support Zope 2.10. [malthe]
five.pt 0.1 (released 11/19/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Initial release.
- Simplified template class inheritance. [malthe]
- Added ``path`` and ``exists`` functions to skin template
namespace. [malthe]
- Added call-support for old-style classes in path
expressions. [malthe]
- Added monkey-patches to replace template engine for module-level
view page template instances. [malthe]
- Made `EContext` class more robust. [malthe]
- Register custom file-system page template class for use with CMF
form controllers. [malthe]
- Register custom file-system page template class for use with CMF
directory views. [malthe]
- Added meta-directives to register browser views, viewlets and
viewlet managers using Chameleon templates. [malthe]
- Updated to latest API. [malthe]
- Package structure. [hannosch]
========
This package brings the Chameleon template engine to the Zope application
server.
It works using monkey-patching onto the existing API (specifically,
the ``TALInterpreter`` and ``PageTemplate`` classes). In simple terms,
what the patching does is to replace the TAL interpreter class and
make sure that the so-called "cooking" routine uses the Chameleon
parser and compiler instead of the ``zope.*`` reference
implementation.
Usage
~~~~~
To enable Chameleon, configure the package using ZCML::
<include package="five.pt" />
For more information on Chameleon, see http://www.pagetemplates.org/.
Changelog
=========
2.2.2 (2014-04-15)
------------------
- Fix test.
[davisagli]
2.2.1 (2012-01-08)
~~~~~~~~~~~~~~~~~~
Features:
- Whitespace between attributes is now reduced to a single whitespace
character.
Bugfixes:
- The path traverser now correctly renders callables, applying the
template namespace as keyword arguments. Previously, only the
``request`` name would be passed.
- The content provider expression now correctly applies TAL namespace
data.
- Avoid duplicate HTML decoding. This fixes an issue which was
introduced because newer Chameleon releases decode all expression
inputs by default.
2.2.0 (2011-10-10)
~~~~~~~~~~~~~~~~~~
- Update implementation to use component-based template engine
configuration, plugging directly into the Zope Toolkit framework.
- Declare RepeatItem as public object with allowed subobjects
[leorochael]
- Bump minimum versions of dependencies z3c.pt and sourcecodegen to fix
lp#853731 and lp#848200.
[leorochael]
- Fixed encoding issue with restricted Python expression. The Python
2.4 AST parser does not accept unicode input and the expression
string must be explicitly encoded to a byte string.
[malthe]
2.1.5 (2011-08-11)
~~~~~~~~~~~~~~~~~~
- Reuse template instance on cook.
[malthe]
- Use the template source string available in the ``_text`` attribute
instead of reading the file (again).
[leorochael, malthe]
- Use secure moduler importer for both Zope 2 and 3 templates. This
fixes issue #34.
[malthe]
2.1.4 (2011-07-28)
~~~~~~~~~~~~~~~~~~
- Upgrade to newest Zope integration package.
2.1.3 (2011-07-23)
~~~~~~~~~~~~~~~~~~
- Fixed issue with traversal and dictionary optimization (the
optimization has been removed).
[malthe]
- Fixed compatibility issue with the ``UnauthorizedBinding`` class and
traversal.
[malthe]
2.1.2 (2011-07-21)
~~~~~~~~~~~~~~~~~~
- Wire in restricted python builtins as imports. Previously these were
added to the dynamic context.
[malthe]
- Use the Python expression from the ``z3c.pt`` package for the
trusted page template engine. This difference between this and the
standard Python expression from Chameleon is that the pipe character
(``"|"``) has the meaning of fallback in Chameleon, but not in the
reference ZPT implementation (where it's only available for path
expressions).
[malthe]
2.1.1 (2011-07-15)
~~~~~~~~~~~~~~~~~~
- Added builtins from ``RestrictedPython`` to context for Zope 2
templates.
This fixes name error issues on templates that use one or more
utility function builtins normally available to Python expressions
in restricted mode.
[malthe]
2.1 (2011-07-14)
~~~~~~~~~~~~~~~~
- Point release.
- Use trusted path expression for trusted expression engine.
[malthe]
- Fixed template context issues where a ``request`` would be required
by the path expression compiler but not provided (typically when in
a situation where the user is unauthorized to view content).
[malthe]
2.1-rc1 (2011-07-14)
~~~~~~~~~~~~~~~~~~~~
- Major architectural change.
The package no longer contains own template classes; instead,
patches are made to switch from the reference TAL interpreter to the
Chameleon TAL compiler.
[malthe]
2.0-rc3 (2011-07-07)
~~~~~~~~~~~~~~~~~~~~
- Refactor custom Python expression implementation to use the
``parse`` method. This builds directly on the base implementation
and its behavior.
[malthe]
2.0-rc2 (2011-05-24)
~~~~~~~~~~~~~~~~~~~~
- Have the base template class implement ``IPageTemplate`` from
``zope.pagetemplate``. This interface is relied on for a number of
adapter registrations and the missing interface declaration affects
packages such as ``plone.caching``.
[malthe]
- Set default reload mode to the Zope 2 application server
configuration's ``debug_mode`` value.
[malthe]
2.0-rc1 (2011-02-28)
~~~~~~~~~~~~~~~~~~~~
- Update to Chameleon 2.0.
This release includes many changes and is a complete rewrite of the
1.x series.
Note that Python 2.5+ is now required.
[malthe]
- Python-expressions are now subject to access-control security.
[malthe]
1.3.3 - 2010-09-30
~~~~~~~~~~~~~~~~~~
- Apply patches at import time instead of product initialisation.
[wichert]
1.3.2 - 2010-09-29
~~~~~~~~~~~~~~~~~~
- Add a same_type method to the default namespace.
[wichert]
1.3.1 - 2010-09-23
~~~~~~~~~~~~~~~~~~
- Added support for eager loading (environment variable
``CHAMELEON_EAGER``). This flag should be passed only in development
mode and will reveal any templates which do not parse.
[malthe]
1.3 - 2010-09-08
~~~~~~~~~~~~~~~~
- Added support for ``PageTemplate`` and
``ZopePageTemplate``.
[malthe]
1.2 - 2010-08-30
~~~~~~~~~~~~~~~~
- Fixed acquisition-wrapping issue: we need to wrap with the parent to
avoid a pair of template objects (original and patched).
1.1 - 2010-05-15
~~~~~~~~~~~~~~~~~
- Add DateTime to the base context. Fixes problems with certain ZMI pages.
[wichert]
1.0 - 2010-05-13
~~~~~~~~~~~~~~~~~
- If template is not an acquirer, wrap it implicitly. [malthe]
- Removed unused ``ViewletManager`` ZCML handler. [malthe]
0.10 - 2010-04-20
~~~~~~~~~~~~~~~~~
- Improve five.grok support [fretin]
- Check if templates are acquisition-aware before trying to wrap them. This
fixes problems with METAL macros in some ZMI pages. [wichert]
0.9 - 2010-04-14
~~~~~~~~~~~~~~~~
- Basic support for five.grok templates. [wichert]
0.8 - 2010-01-05
~~~~~~~~~~~~~~~~
- Fixed some calling convention oddity that would result in the view
instance being passed doubly as the template arguments.
0.7 - 2009-05-20
~~~~~~~~~~~~~~~~
- Default encoding of the base template set to UTF-8. [malthe]
- Update to latest Chameleon. [malthe]
- Patch ``macros`` attribute. [malthe]
0.6 - 2009-04-06
~~~~~~~~~~~~~~~~
- Avoid another case of unconditionally attempting to Acquisition wrap
template files. We do have an interface check for this. [hannosch]
0.5 - 2009-02-17
~~~~~~~~~~~~~~~~
- Added test function to template context. [malthe]
- Fixed edge-case (special case?) where the view of a
ViewPageTemplateFile is really only the view for a view. [malthe]
- Added patch for ``Products.PageTemplates.PageTemplateFile``. [malthe]
- Rework the "full namespace provided to path expression" change introduced
in 0.3. We no longer call the expensive locals() function but construct a
minimal namespace with the context and request ourselves. [hannosch]
- If the ``__get__`` method is called uninstantiated, just return the
class itself. [malthe]
five.pt 0.4 (released 2/13/2009)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Fixed issue where the ``template`` parameter to a viewlet manager
directive was effectively ignored. [malthe]
- Fixed acquisition-wrapping issue with the (patched) bound template
class (could cause infinite loop due to cyclic acquisition
chain). [malthe]
- Moved evaluate_path and evaluate_exists over to ``z3c.pt``, adding
support for global ``path()`` and ``exists()`` functions for use in
``python:`` expressions to it (LP #317967). [sidnei]
five.pt 0.3 (released 12/17/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Use bobo traversal if ``OFS.interfaces.ITraversable`` interface is
provided. [malthe]
- Adjusted the path expression to provide the full namespace to the render
function and not just the request. This matches Zope2 behavior. [hannosch]
five.pt 0.2 (released 11/29/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- From Zope 2.12 onwards, do not acquisition-wrap content
provider. [malthe]
- Split out CMF-related code to separate package. [malthe]
- Compatibility changes to support Zope 2.10. [malthe]
five.pt 0.1 (released 11/19/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Initial release.
- Simplified template class inheritance. [malthe]
- Added ``path`` and ``exists`` functions to skin template
namespace. [malthe]
- Added call-support for old-style classes in path
expressions. [malthe]
- Added monkey-patches to replace template engine for module-level
view page template instances. [malthe]
- Made `EContext` class more robust. [malthe]
- Register custom file-system page template class for use with CMF
form controllers. [malthe]
- Register custom file-system page template class for use with CMF
directory views. [malthe]
- Added meta-directives to register browser views, viewlets and
viewlet managers using Chameleon templates. [malthe]
- Updated to latest API. [malthe]
- Package structure. [hannosch]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
five.pt-2.2.2dev0.zip
(27.9 kB
view hashes)