from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy
import django.template.backends.base
import genshi.template
+import genshi.template.loader
+import genshi.template.base
class GenshiEngine(django.template.backends.base.BaseEngine):
+ app_dirname = 'genshi'
+
def __init__(self, params):
params = params.copy()
options = params.pop('OPTIONS').copy()
+ self.app_dirname = options.get('app_dirname', self.app_dirname)
super(GenshiEngine, self).__init__(params)
loader = genshi.template.TemplateLoader(self.template_dirs, auto_reload=options['auto_reload'])
self.loader = loader
try:
template = genshi.template.MarkupTemplate(template_code)
return GenshiTemplateWrapper(template)
- except genshi.TemplateCompilationFailed as exc:
+ except genshi.template.base.TemplateSyntaxError as exc:
raise django.template.TemplateSyntaxError(exc.args)
def get_template(self, template_name):
try:
template = self.loader.load(template_name)
- return GenshiTemplateWrapper(self.loader.get_template(template_name))
- except genshi.TemplateNotFound as exc:
+ return GenshiTemplateWrapper(template)
+ except genshi.template.loader.TemplateNotFound as exc:
raise django.template.TemplateDoesNotExist(exc.args)
- except genshi.TemplateCompilationFailed as exc:
+ except genshi.template.base.TemplateSyntaxError as exc:
raise django.template.TemplateSyntaxError(exc.args)
context['request'] = request
context['csrf_input'] = csrf_input_lazy(request)
context['csrf_token'] = csrf_token_lazy(request)
- stream = self.template.generate(dict=context)
+ stream = self.template.generate(**context)
return stream.render()