Mercurial > hg > decoupage
comparison decoupage/web.py @ 101:747c7e337c56
add local directory for template rendering
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Tue, 31 Jan 2017 10:24:42 -0800 |
parents | 82ee67b95a0c |
children | 450aff4c97e3 |
comparison
equal
deleted
inserted
replaced
100:82ee67b95a0c | 101:747c7e337c56 |
---|---|
22 from formatters import formatters | 22 from formatters import formatters |
23 from genshi.builder import Markup | 23 from genshi.builder import Markup |
24 from genshi.template import TemplateLoader | 24 from genshi.template import TemplateLoader |
25 from genshi.template.base import TemplateError | 25 from genshi.template.base import TemplateError |
26 from genshi.template.base import TemplateSyntaxError | 26 from genshi.template.base import TemplateSyntaxError |
27 from genshi.template.loader import TemplateNotFound | |
27 from martini.config import ConfigMunger | 28 from martini.config import ConfigMunger |
28 from paste.fileapp import FileApp | 29 from paste.fileapp import FileApp |
29 from pkg_resources import iter_entry_points | 30 from pkg_resources import iter_entry_points |
30 from pkg_resources import load_entry_point | 31 from pkg_resources import load_entry_point |
31 from pkg_resources import resource_filename | 32 from pkg_resources import resource_filename |
32 from webob import Request, Response, exc | 33 from webob import Request, Response, exc |
33 | 34 |
35 | |
34 transformers = transformers() | 36 transformers = transformers() |
35 string = (str, unicode) | 37 string = (str, unicode) |
38 | |
36 | 39 |
37 class FileSorter(object): | 40 class FileSorter(object): |
38 def __init__(self, *keys): | 41 def __init__(self, *keys): |
39 self.keys = keys | 42 self.keys = keys |
40 def __call__(self, item): | 43 def __call__(self, item): |
235 else: | 238 else: |
236 for _directory in self.template_directories: | 239 for _directory in self.template_directories: |
237 if template in os.listdir(_directory): | 240 if template in os.listdir(_directory): |
238 break | 241 break |
239 else: | 242 else: |
240 raise IOError("template %s not found" % template) | 243 raise TemplateNotFound("template %s not found" % template) |
244 | |
245 # extend template `search_path` to include local directory | |
246 self.loader.search_path.insert(0, directory) | |
241 try: | 247 try: |
242 template = self.loader.load(template) | 248 template = self.loader.load(template) |
243 res = template.generate(**data).render('html', doctype='html') | 249 res = template.generate(**data).render('html', doctype='html') |
244 except (TemplateError, TemplateSyntaxError), e: | 250 except (TemplateError, TemplateSyntaxError, TemplateNotFound), e: |
245 if local_index: | 251 if local_index: |
246 print repr(e) | 252 print repr(e) |
247 return self.fileserver(local_index) | 253 return self.fileserver(local_index) |
248 raise | 254 raise |
255 finally: | |
256 self.loader.search_path.pop(0) | |
249 | 257 |
250 # set charset if given | 258 # set charset if given |
251 kw = {} | 259 kw = {} |
252 if self.charset: | 260 if self.charset: |
253 kw['charset'] = self.charset | 261 kw['charset'] = self.charset |