Skip to main content
============================
Persistent Cheetah templates
============================

Features:

- Cheetah template engine,
- sources in filesystem,
- stored in ZODB,
- editable TTW, simple "$var" Cheetah syntax for non-technical user,
- able to testing in management web-form,
- able to reset from source.

Use cases:

- mail templates,
- editable HTML snippets and pages,
- other.


* Needed imports for these tests *

>>> import os, tempfile
>>> temp_dir = tempfile.mkdtemp()

>>> import zope.component
>>> import ice.template

>>> from zope.configuration import xmlconfig
>>> context = xmlconfig.file('meta.zcml', ice.template)


Create templates
----------------

1) Create source file using Cheetah syntax "$" for the variables::

>>> file = os.path.join(temp_dir, 'welcome.tmpl')

>>> open(file, 'w').write('''
... Dear $user_name!
... Welcome to $site_name!
... ''')

2) Register template::

>>> context = xmlconfig.string('''
... <configure
... xmlns="http://namespaces.zope.org/zope"
... xmlns:ice="http://namespaces.zope.org/ice"
... i18n_domain="test">
...
... <ice:template
... name="welcome"
... title="Welcome"
... storage="my-templates"
... source="%s"
... variables="user_name
... site_name"
... />
...
... </configure>
... ''' % file, context=context)


Create storage
--------------

Need create (one or more) local utility to store templates.
Note, the utility name used for lookup the storage::

>>> templates = ice.template.Templates()

>>> zope.component.provideUtility(
... templates, ice.template.ITemplates, 'my-templates')


Usage
-----

Use template::

>>> data = {'user_name':u'Bob', 'site_name':'www.gnu.org'}

>>> templates.compileTemplate('welcome', data)
'\n Dear Bob!\n Welcome to www.gnu.org!\n'


Manage templates
----------------

Looking all templates, registered for this storage::

>>> list(templates.getAllTemplates())
[(u'welcome', <ice.template.zcml.Template object at ...>)]

Get variables names::

>>> templates.getVariables('welcome')
[u'user_name', u'site_name']

Get template::

>>> templates.getTemplate('welcome')
'\n Dear $user_name!\n Welcome to $site_name!\n'

Edit template::

>>> templates.setTemplate('welcome', "$site_name for you, $user_name")

>>> templates.compileTemplate('welcome', data)
'www.gnu.org for you, Bob'

Reset from source::

>>> templates.resetTemplate('welcome')
'\n Dear $user_name!\n Welcome to $site_name!\n'

>>> templates.compileTemplate('welcome', data)
'\n Dear Bob!\n Welcome to www.gnu.org!\n'


Using property
--------------

Another way to use special property::

>>> class Pagelet(object):
...
... template = ice.template.PersistentTemplate('my-templates', 'welcome')
...
... def update(self):
... self.data = {'user_name':'Man', 'site_name':'www.python.com.ua'}
...
... def render(self):
... return self.template(self.data)

>>> view = Pagelet()
>>> view.update()
>>> view.render()
'\n Dear Man!\n Welcome to www.python.com.ua!\n'


Management UI
-------------

Management persistent Cheetah templates UI based on z3c.pagelet layers.

There are 3 views for management templates:

1) Listing of all storages.
2) Listing of all templates in a storage.
3) Edit form for given template, reload, testing, preview.

Actually, you need to do only one: register listing of all storages
pagelet using class ice.template.browser.storages.Pagelet (see example
in configure.zcml in ice.template.browser module), because (2) and (3)
are already registered. For examples, take a look configure.zcml
in ice.template.tests module.

=======
CHANGES
=======


Version 0.1.0 (2009-05-04)
--------------------------

- Initial release, this code is moved from common ice.app library.

Release files for ice.template 0.1.0

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

Source distribution (sdist)

Source distribution for ice.template 0.1.0
File Size Uploaded
ice.template-0.1.0.tar.gz 12.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ice.template 0.1.0
File Interpreter ABI Platform
ice.template-0.1.0-py2.4.egg Legacy Egg format - - Details

Total release size: 46.1 kB

Release files / ice.template-0.1.0.tar.gz

Download URL ice.template-0.1.0.tar.gz
Size 12.8 kB
Tags Source
SHA-256 checksum
How to use checksums
97870b3d4047cfe1e8247b10a4b131712dfc63c410f4771d631bf0554be412d7
BLAKE2b-256 checksum
How to use checksums
5db5d0f933ceed5f814411dd33e749c31e4834c1d4dddcece5cf43765a396522
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ice.template-0.1.0-py2.4.egg

Download URL ice.template-0.1.0-py2.4.egg
Size 33.3 kB
Tags Egg
SHA-256 checksum
How to use checksums
0b9d5453df5ce88c36036874ecf6ec651756d24b988c9aa45c88d08770d90fe4
BLAKE2b-256 checksum
How to use checksums
bc0c50fea78c6df20e21401dadbe3285f610bc201fab37fefd3de7531ad92c32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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