encode Django templates render (#20396)

This commit is contained in:
Thomas NOËL 2017-12-02 03:15:38 +01:00
parent b77196695d
commit 47ca25760f
2 changed files with 31 additions and 1 deletions

View File

@ -1,7 +1,22 @@
# -*- coding: utf-8 -*-
import pytest
from quixote import cleanup
from qommon.template import Template, TemplateError
from utilities import create_temporary_pub, clean_temporary_pub
def setup_module(module):
cleanup()
global pub
pub = create_temporary_pub()
def teardown_module(module):
clean_temporary_pub()
def test_template():
tmpl = Template('')
@ -42,3 +57,17 @@ def test_template():
tmpl = Template('[if-any foo][foo][endif]', raises=True)
tmpl = Template('[if-any foo][foo][endif]')
assert tmpl.render({'foo': 'bar'}) == '[if-any foo][foo][endif]'
def test_template_encoding():
# django
tmpl = Template('{{ foo }} à vélo')
assert tmpl.render() == ' à vélo'
assert tmpl.render({'foo': 'fou'}) == 'fou à vélo'
assert tmpl.render({'foo': 'félé'}) == 'félé à vélo'
# ezt
tmpl = Template('[foo] à vélo')
assert tmpl.render() == '[foo] à vélo'
assert tmpl.render({'foo': 'fou'}) == 'fou à vélo'
assert tmpl.render({'foo': 'félé'}) == 'félé à vélo'

View File

@ -484,13 +484,14 @@ class Template(object):
def django_render(self, context={}):
context = DjangoContext(context)
try:
return self.template.render(context)
rendered = self.template.render(context)
except (DjangoTemplateSyntaxError, DjangoVariableDoesNotExist) as e:
if self.raises:
from qommon import _
raise TemplateError(_('failure to render Django template: %s'), e)
else:
return self.value
return rendered.encode(get_publisher().site_charset)
def ezt_render(self, context={}):
fd = StringIO()