~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to turbozpt/template.py

remove the obscure here hack and tidy up turbozpt some more

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""
2
 
"""
3
 
 
4
 
from zope.pagetemplate import pagetemplatefile
5
 
import os
6
 
 
7
 
_zpt_cache = {}
8
 
 
9
 
def _compile_template(tfile):
10
 
    mod = PageTemplate(tfile)
11
 
    mtime = os.stat(tfile).st_mtime
12
 
    mod.__mtime__ = mtime
13
 
    return mod
14
 
 
15
 
def zpt(tfile):
16
 
    if tfile in _zpt_cache:
17
 
        mtime = os.stat(tfile).st_mtime
18
 
        mod = _zpt_cache[tfile]
19
 
        if mod.__mtime__ != mtime:
20
 
            mod = _compile_template(tfile)
21
 
            _zpt_cache[tfile] = mod
22
 
    else:
23
 
        mod = _zpt_cache[tfile] = _compile_template(tfile)
24
 
    return mod
25
 
 
26
 
class Here(object):
27
 
    def __init__(self, base, options):
28
 
        self.base = base
29
 
        self.options = options
30
 
 
31
 
    def __getitem__(self, name):
32
 
        return zpt(os.path.join(self.base, name))(**self.options)
33
 
 
34
 
class PageTemplate(pagetemplatefile.PageTemplateFile):
35
 
    def __init__(self, name):
36
 
        self.base = os.path.dirname(name)
37
 
        pagetemplatefile.PageTemplateFile.__init__(self, name)
38
 
 
39
 
    def pt_getContext(self, args=(), options={}, **ignored):
40
 
        rval = pagetemplatefile.PageTemplateFile.pt_getContext(
41
 
            self, args, options, **ignored)
42
 
        rval.update(options)
43
 
        rval.update({'here':Here(self.base, options)})
44
 
        return rval