ice.template 0.1.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

ice.template 0.1.0

============================
Persistent Cheetah templates
============================

Features:

- Cheetah template engine,
- sources in filesystem,
- stored in ZODB,
- editable TTW, simple "var"Cheetahsyntaxfornon−technicaluser,−abletotestinginmanagementweb−form,−abletoresetfromsource.Usecases:−mailtemplates,−editableHTMLsnippetsandpages,−other.∗Neededimportsforthesetests∗>>>importos,tempfile>>>tempdir=tempfile.mkdtemp()>>>importzope.component>>>importice.template>>>fromzope.configurationimportxmlconfig>>>context=xmlconfig.file(′meta.zcml′,ice.template)Createtemplates−−−−−−−−−−−−−−−−1)CreatesourcefileusingCheetahsyntax"" for the variables::

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

>>> open(file, 'w').write('''
... Dear username!...Welcometosite_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 username!\nWelcometosite_name!\n'

Edit template::

>>> templates.setTemplate('welcome', "sitenameforyou,user_name")

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

Reset from source::

>>> templates.resetTemplate('welcome')
'\n Dear username!\nWelcometosite_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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.