Skip to main content

Introduction

This package enhances the integration of Chameleon into Plone with five.pt.

In our deployments we have source checkouts (git) which we are pulled on updates. This may cause templates to be updated on the next request in running instances, which may cause errors because the associated code was not yet reloaded because the zope instance was not yet rebooted. In order to make that more robust we use Chameleon with eager-loading enabled and auto-reload disabled, so that after an instance is started it will no longer read templates.

These options do not work as expected when using five.pt for integrating Chameleon in combination with ViewPageTemplateFile instances. ftw.chameleon contains enhancements for making that work well.

Enhancements

  • zope.pagetemplate is patched so that it considers the CHAMELEON_RELOAD configuration: when CHAMELEON_RELOAD is disabled it does not trigger a recooking of the template even when it has changed.

  • When CHAMELEON_EAGER is enabled, all templates will be cooked on startup. This is done by explicitly cooking all known templates in a separate thread.

  • Fire an event when chameleon compiles templates.

  • Log warnings or exceptions when templates are compiled unexpectedly. This helps to pin-point problems with templates which are not cacheable.

  • When CHAMELEON_EAGER is enabled, the templates in portal_skins will be cooked after the first request on the Plone site.

Compatibility

Plone 4.3.x

Installation

Buildout example for production:

[instance]
eggs +=
    ftw.chameleon
environment-vars +=
    CHAMELEON_EAGER true
    CHAMELEON_RELOAD false
    CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache
    FTW_CHAMELEON_RECOOK_WARNING true

Buildout example for development:

[instance]
eggs +=
    ftw.chameleon
environment-vars +=
    CHAMELEON_RELOAD true
    CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache

You need to make sure that the cache-directory exists. This can be done with buildout:

[buildout]
parts += chameleon-cache

[chameleon-cache]
directory = ${buildout:directory}/var/chameleon-cache
recipe = collective.recipe.shelloutput
commands =
    cmd1 = mkdir -p ${chameleon-cache:directory}

[instance]
environment-vars +=
    CHAMELEON_CACHE ${chameleon-cache:directory}

Environment variables

Name

Description

Values

Recommendation

CHAMELEON_EAGER

Parse and compile templates on startup.

true, false

true

CHAMELEON_RELOAD

Reload templates when they have changed.

true, false

false

CHAMELEON_CACHE

File system cache.

Path to cache directory.

.../var/chameleon-cache

FTW_CHAMELEON_RECOOK_WARNING

Warn when recooking templates.

true, false

true

FTW_CHAMELEON_RECOOK_EXCEPTION

Exception when recooking templates.

true, false

true when using Sentry.

See also the Chameleon documentation.

Development

  1. Fork this repo

  2. Clone your fork

  3. Shell: ln -s development.cfg buildout.cfg

  4. Shell: python bootstrap.py

  5. Shell: bin/buildout

Run bin/test to test your changes.

Or start an instance by running bin/instance fg.

Metadata

Release files for ftw.chameleon 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ftw.chameleon 1.1.2
File Size Uploaded
ftw.chameleon-1.1.2.tar.gz 14.9 kB Details

Release files / ftw.chameleon-1.1.2.tar.gz

Download URL ftw.chameleon-1.1.2.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2fa98bac42c616e1fcb6a6029be7f67872161ebcfc392402728d533db6da07ca
BLAKE2b-256 checksum
How to use checksums
e77c07a0e5134c20855eb44d5e44d0c6df341cf7d80f23207002dc5e96325808
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.3.0

1 release file

1.2.0

1 release file

This release

1.1.2 This release

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page