~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to turbozpt/template.py

merge txtfile-updates-bug-241999:
update readme and news, remove some dead code and tidy up
server-branches.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""
2
 
By VladDrac@irc.freenode.net/#turbogears
3
 
+ Some small modifications
4
 
"""
5
 
 
6
 
from zope.pagetemplate import pagetemplatefile
7
 
import os.path
8
 
import sys
9
 
 
10
 
class Here(object):
11
 
    def __init__(self, base, options):
12
 
        self.base = base
13
 
        self.options = options
14
 
 
15
 
    def __getitem__(self, name):
16
 
        tpl = PageTemplate(os.path.join(self.base, name))
17
 
        tpl.add_context(self.options)
18
 
        return tpl
19
 
 
20
 
class PageTemplate(pagetemplatefile.PageTemplateFile):
21
 
    def __init__(self, name):
22
 
        base = os.path.dirname(sys._getframe(1).f_globals["__file__"])
23
 
        self.extra_context = {}
24
 
        self.name = name
25
 
        self.fullpath = os.path.join(base, self.name)
26
 
        self.base = os.path.dirname(self.fullpath)
27
 
        pagetemplatefile.PageTemplateFile.__init__(self, self.fullpath)
28
 
    
29
 
    def render(self, extra_dict=None):
30
 
        if extra_dict is None:
31
 
            extra_dict = {}
32
 
        context = self.pt_getContext()
33
 
        context.update(extra_dict)
34
 
        return self.pt_render(context)
35
 
    
36
 
    def add_context(self, d):
37
 
        self.extra_context.update(d)
38
 
        
39
 
    def pt_getContext(self, args=(), options={}, **ignored):
40
 
        rval = pagetemplatefile.PageTemplateFile.pt_getContext(self, args, options, **ignored)
41
 
        rval.update(options)
42
 
        rval.update(self.extra_context)
43
 
        rval.update({'here':Here(self.base, options), 'template':self})
44
 
        return rval