misc: add disable-ezt-support feature flag (#85112)
This commit is contained in:
parent
83b0032a88
commit
614c148dd3
|
@ -13,6 +13,7 @@ from wcs.qommon.ezt import (
|
|||
UnmatchedEndError,
|
||||
_re_parse,
|
||||
)
|
||||
from wcs.qommon.template import Template as QommonTemplate
|
||||
from wcs.scripts import ScriptsSubstitutionProxy
|
||||
|
||||
from .utilities import clean_temporary_pub, create_temporary_pub
|
||||
|
@ -271,3 +272,19 @@ def test_re_parse():
|
|||
assert _re_parse.split('x [a] y [b] z') == ['x ', 'a', None, ' y ', 'b', None, ' z']
|
||||
assert _re_parse.split('[a "b" c "d"]') == ['', 'a "b" c "d"', None, '']
|
||||
assert _re_parse.split(r'["a \"b[foo]" c.d f]') == ['', '"a \\"b[foo]" c.d f', None, '']
|
||||
|
||||
|
||||
def test_disable(pub):
|
||||
template = QommonTemplate('<p>[foo]</p>')
|
||||
assert template.render(context={'foo': 'bar'}) == '<p>bar</p>'
|
||||
|
||||
pub.load_site_options()
|
||||
if not pub.site_options.has_section('options'):
|
||||
pub.site_options.add_section('options')
|
||||
pub.site_options.set('options', 'disable-ezt-support', 'true')
|
||||
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd:
|
||||
pub.site_options.write(fd)
|
||||
pub.load_site_options()
|
||||
|
||||
template = QommonTemplate('<p>[foo]</p>')
|
||||
assert template.render(context={'foo': 'bar'}) == '<p>[foo]</p>'
|
||||
|
|
|
@ -44,7 +44,7 @@ def teardown_module(module):
|
|||
clean_temporary_pub()
|
||||
|
||||
|
||||
def test_template():
|
||||
def test_template(pub):
|
||||
tmpl = Template('')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': 'bar'}) == ''
|
||||
|
@ -116,7 +116,7 @@ def test_now_and_today_variables(pub):
|
|||
assert tmpl.render(context) == now
|
||||
|
||||
|
||||
def test_template_templatetag():
|
||||
def test_template_templatetag(pub):
|
||||
# check qommon templatetags are always loaded
|
||||
tmpl = Template('{{ date|parse_datetime|date:"Y" }}')
|
||||
assert tmpl.render({'date': '2018-06-06'}) == '2018'
|
||||
|
@ -126,21 +126,21 @@ def test_template_templatetag():
|
|||
assert tmpl.render() == 'hello'
|
||||
|
||||
|
||||
def test_startswith_templatetag():
|
||||
def test_startswith_templatetag(pub):
|
||||
tmpl = Template('{% if foo|startswith:"bar" %}hello{% endif %}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': 'bar-baz'}) == 'hello'
|
||||
assert tmpl.render({'foo': 'baz-bar'}) == ''
|
||||
|
||||
|
||||
def test_endswith_templatetag():
|
||||
def test_endswith_templatetag(pub):
|
||||
tmpl = Template('{% if foo|endswith:"bar" %}hello{% endif %}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': 'baz-bar'}) == 'hello'
|
||||
assert tmpl.render({'foo': 'bar-baz'}) == ''
|
||||
|
||||
|
||||
def test_split_templatetag():
|
||||
def test_split_templatetag(pub):
|
||||
tmpl = Template('{{ foo|split|last }}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': 'bar baz'}) == 'baz'
|
||||
|
@ -152,7 +152,7 @@ def test_split_templatetag():
|
|||
assert tmpl.render({'foo': 'baz-bar'}) == 'bar'
|
||||
|
||||
|
||||
def test_strip_templatetag():
|
||||
def test_strip_templatetag(pub):
|
||||
tmpl = Template('{{ foo|strip:"_" }}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': None}) == ''
|
||||
|
@ -164,7 +164,7 @@ def test_strip_templatetag():
|
|||
assert tmpl.render({'foo': ' foo barXX'}) == 'foo bar'
|
||||
|
||||
|
||||
def test_removeprefix_templatetag():
|
||||
def test_removeprefix_templatetag(pub):
|
||||
tmpl = Template('{{ foo|removeprefix }}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': None}) == ''
|
||||
|
@ -179,7 +179,7 @@ def test_removeprefix_templatetag():
|
|||
assert tmpl.render({'foo': 'XYXYfoo barXY'}) == 'XYfoo barXY'
|
||||
|
||||
|
||||
def test_removesuffix_templatetag():
|
||||
def test_removesuffix_templatetag(pub):
|
||||
tmpl = Template('{{ foo|removesuffix }}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': None}) == ''
|
||||
|
@ -194,7 +194,7 @@ def test_removesuffix_templatetag():
|
|||
assert tmpl.render({'foo': 'XYfoo barXYXY'}) == 'XYfoo barXY'
|
||||
|
||||
|
||||
def test_urljoin_templatefilter():
|
||||
def test_urljoin_templatefilter(pub):
|
||||
tmpl = Template('{{ foo|urljoin }}')
|
||||
assert tmpl.render() == ''
|
||||
assert tmpl.render({'foo': None}) == ''
|
||||
|
@ -245,7 +245,7 @@ def test_unaccent_templatetag(pub):
|
|||
assert tmpl.render(context) == ''
|
||||
|
||||
|
||||
def test_template_encoding():
|
||||
def test_template_encoding(pub):
|
||||
# django
|
||||
tmpl = Template('{{ foo }} à vélo')
|
||||
assert tmpl.render() == 'à vélo'
|
||||
|
@ -435,12 +435,12 @@ def test_date_maths(pub):
|
|||
assert tmpl.render({'plop': '2017-12-21 18:00'}) == '2017-12-21 18:12:30'
|
||||
|
||||
|
||||
def test_variable_unicode_error_handling():
|
||||
def test_variable_unicode_error_handling(pub):
|
||||
tmpl = Template('{{ form_var_éléphant }}')
|
||||
assert tmpl.render() == ''
|
||||
|
||||
|
||||
def test_decimal_templatetag():
|
||||
def test_decimal_templatetag(pub):
|
||||
tmpl = Template('{{ plop|decimal }}')
|
||||
assert tmpl.render({'plop': 'toto'}) == '0'
|
||||
assert tmpl.render({'plop': '3.14'}) == '3.14'
|
||||
|
@ -481,7 +481,7 @@ def test_decimal_templatetag():
|
|||
assert tmpl.render() == 'hello'
|
||||
|
||||
|
||||
def test_mathematics_templatetag():
|
||||
def test_mathematics_templatetag(pub):
|
||||
tmpl = Template('{{ term1|add:term2 }}')
|
||||
|
||||
# using strings
|
||||
|
@ -594,7 +594,7 @@ def test_mathematics_templatetag():
|
|||
assert tmpl.render({'term1': 2, 'term2': 3}) == '2.00'
|
||||
|
||||
|
||||
def test_rounding_templatetag():
|
||||
def test_rounding_templatetag(pub):
|
||||
# ceil
|
||||
tmpl = Template('{{ value|ceil }}')
|
||||
assert tmpl.render({'value': 3.14}) == '4'
|
||||
|
@ -628,7 +628,7 @@ def test_rounding_templatetag():
|
|||
assert tmpl.render({'value': None}) == '0'
|
||||
|
||||
|
||||
def test_abs_templatetag():
|
||||
def test_abs_templatetag(pub):
|
||||
tmpl = Template('{{ value|abs }}')
|
||||
assert tmpl.render({'value': 3.14}) == '3.14'
|
||||
assert tmpl.render({'value': -3.14}) == '3.14'
|
||||
|
@ -641,7 +641,7 @@ def test_abs_templatetag():
|
|||
assert tmpl.render({'value': None}) == '0'
|
||||
|
||||
|
||||
def test_clamp_templatetag():
|
||||
def test_clamp_templatetag(pub):
|
||||
tmpl = Template('{{ value|clamp:"3.5 5.5" }}')
|
||||
assert tmpl.render({'value': 4}) == '4'
|
||||
assert tmpl.render({'value': 6}) == '5.5'
|
||||
|
@ -656,7 +656,7 @@ def test_clamp_templatetag():
|
|||
assert tmpl.render({'value': 4}) == ''
|
||||
|
||||
|
||||
def test_limit_templatetags():
|
||||
def test_limit_templatetags(pub):
|
||||
for v in (3.5, '"3.5"', 'xxx'):
|
||||
tmpl = Template('{{ value|limit_low:%s }}' % v)
|
||||
assert tmpl.render({'value': 4, 'xxx': 3.5}) == '4'
|
||||
|
@ -675,7 +675,7 @@ def test_limit_templatetags():
|
|||
assert tmpl.render({'value': 3, 'xxx': 'plop'}) == ''
|
||||
|
||||
|
||||
def test_token_decimal():
|
||||
def test_token_decimal(pub):
|
||||
tokens = [Template('{% token_decimal 4 %}').render() for i in range(100)]
|
||||
assert all(len(token) == 4 for token in tokens)
|
||||
assert all(token.isdigit() for token in tokens)
|
||||
|
@ -687,7 +687,7 @@ def test_token_decimal():
|
|||
assert t.render({'token1': tokens[0] + ' ', 'token2': tokens[0].lower()}) == ''
|
||||
|
||||
|
||||
def test_token_alphanum():
|
||||
def test_token_alphanum(pub):
|
||||
tokens = [Template('{% token_alphanum 4 %}').render() for i in range(100)]
|
||||
assert all(len(token) == 4 for token in tokens)
|
||||
assert all(token.upper() == token for token in tokens)
|
||||
|
@ -703,7 +703,7 @@ def test_token_alphanum():
|
|||
assert t.render({'token1': tokens[0] + ' ', 'token2': tokens[0].lower()}) == 'ok'
|
||||
|
||||
|
||||
def test_distance():
|
||||
def test_distance(pub):
|
||||
t = Template(
|
||||
'{{ "48;2"|distance:"48.1;2.1"|floatformat }}',
|
||||
)
|
||||
|
@ -758,7 +758,7 @@ def test_get_filter():
|
|||
assert tmpl.render({'foo': 23}) == ''
|
||||
|
||||
|
||||
def test_get_on_lazy_var():
|
||||
def test_get_on_lazy_var(pub):
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'lazy'
|
||||
|
@ -790,7 +790,7 @@ def test_get_on_lazy_var():
|
|||
assert tmpl.render(context) == 'baz'
|
||||
|
||||
|
||||
def test_reproj():
|
||||
def test_reproj(pub):
|
||||
class MockFormData:
|
||||
formdef = None
|
||||
geolocations = {'base': {'lat': 48, 'lon': 2}}
|
||||
|
@ -802,7 +802,7 @@ def test_reproj():
|
|||
assert int(float(coords[1])) == 5422836
|
||||
|
||||
|
||||
def test_phonenumber_fr():
|
||||
def test_phonenumber_fr(pub):
|
||||
t = Template('{{ number|phonenumber_fr }}')
|
||||
assert t.render({'number': '01 23 45 67 89'}) == '01 23 45 67 89'
|
||||
assert t.render({'number': '0 1 23 45 67 89'}) == '01 23 45 67 89'
|
||||
|
@ -879,7 +879,7 @@ def test_is_french_mobile_phone_number(pub):
|
|||
|
||||
|
||||
@pytest.mark.skipif('langdetect is None')
|
||||
def test_language_detect():
|
||||
def test_language_detect(pub):
|
||||
t = Template('{{ plop|language_detect }}')
|
||||
assert t.render({'plop': 'Good morning world'}) == 'en'
|
||||
assert t.render({'plop': 'Bonjour tout le monde'}) == 'fr'
|
||||
|
@ -915,7 +915,7 @@ def test_language_detect():
|
|||
(datetime.date.today() + datetime.timedelta(days=1), False),
|
||||
],
|
||||
)
|
||||
def test_datetime_in_past(value, expected):
|
||||
def test_datetime_in_past(pub, value, expected):
|
||||
t = Template('{{ value|datetime_in_past }}')
|
||||
assert t.render({'value': value}) == str(expected)
|
||||
|
||||
|
@ -1265,7 +1265,7 @@ def test_age_in_working_days_weekend(settings, pub):
|
|||
assert t.render({'value': '2020-06-19'}) == '2'
|
||||
|
||||
|
||||
def test_sum():
|
||||
def test_sum(pub):
|
||||
tmpl = Template('{{ "2 29.5 9,5 .5"|split|sum }}')
|
||||
assert tmpl.render({}) == '41.5'
|
||||
tmpl = Template('{{ list|sum }}')
|
||||
|
@ -1278,7 +1278,7 @@ def test_sum():
|
|||
assert tmpl.render({}) == ''
|
||||
|
||||
|
||||
def test_getlist():
|
||||
def test_getlist(pub):
|
||||
class FakeBlock:
|
||||
def getlist(self, key):
|
||||
return {'foo': ['foo1', 'foo2'], 'bar': ['bar1', 'bar2']}[key]
|
||||
|
@ -1294,7 +1294,7 @@ def test_getlist():
|
|||
assert tmpl.render({'egg': 42}) == '0'
|
||||
|
||||
|
||||
def test_getlistdict():
|
||||
def test_getlistdict(pub):
|
||||
class FakeBlock:
|
||||
def getlistdict(self, keys):
|
||||
data = [
|
||||
|
@ -1317,7 +1317,7 @@ def test_getlistdict():
|
|||
assert tmpl.render({'egg': 42}) == '0'
|
||||
|
||||
|
||||
def test_django_contrib_humanize_filters():
|
||||
def test_django_contrib_humanize_filters(pub):
|
||||
tmpl = Template('{{ foo|intcomma }}')
|
||||
assert tmpl.render({'foo': 10000}) == '10,000'
|
||||
assert tmpl.render({'foo': '10000'}) == '10,000'
|
||||
|
@ -1326,7 +1326,7 @@ def test_django_contrib_humanize_filters():
|
|||
assert tmpl.render({'foo': '10000'}) == '10 000'
|
||||
|
||||
|
||||
def test_is_empty():
|
||||
def test_is_empty(pub):
|
||||
tmpl = Template('{{ foo|is_empty }}')
|
||||
assert tmpl.render({}) == 'True'
|
||||
assert tmpl.render({'foo': ''}) == 'True'
|
||||
|
@ -1339,7 +1339,7 @@ def test_is_empty():
|
|||
assert tmpl.render({'foo': {'foo': 42}}) == 'False'
|
||||
|
||||
|
||||
def test_first():
|
||||
def test_first(pub):
|
||||
class MockFormData:
|
||||
formdef = None
|
||||
|
||||
|
@ -1354,7 +1354,7 @@ def test_first():
|
|||
assert tmpl.render({'foo': {'bar': 'baz'}}) == ''
|
||||
|
||||
|
||||
def test_last():
|
||||
def test_last(pub):
|
||||
class MockFormData:
|
||||
formdef = None
|
||||
|
||||
|
@ -1369,7 +1369,7 @@ def test_last():
|
|||
assert tmpl.render({'foo': {'bar': 'baz'}}) == ''
|
||||
|
||||
|
||||
def test_random():
|
||||
def test_random(pub):
|
||||
class MockFormData:
|
||||
formdef = None
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ def test_random():
|
|||
assert tmpl.render({'foo': {'bar': 'baz'}}) == ''
|
||||
|
||||
|
||||
def test_convert_as_list():
|
||||
def test_convert_as_list(pub):
|
||||
tmpl = Template('{{ foo|list|first }}')
|
||||
assert tmpl.render({'foo': ['foo']}) == 'foo'
|
||||
|
||||
|
@ -1399,7 +1399,7 @@ def test_convert_as_list():
|
|||
assert tmpl.render({'foo': list_range}) == '0'
|
||||
|
||||
|
||||
def test_convert_as_list_with_add():
|
||||
def test_convert_as_list_with_add(pub):
|
||||
tmpl = Template('{{ foo|list|add:bar|join:", " }}')
|
||||
assert tmpl.render({'foo': [1, 2], 'bar': ['a', 'b']}) == '1, 2, a, b'
|
||||
assert tmpl.render({'foo': [1, 2], 'bar': 'ab'}) == '1, 2, ab'
|
||||
|
@ -1418,7 +1418,7 @@ def test_adjust_to_week_monday(pub):
|
|||
assert t.render({'value': datetime.datetime(2021, 6, 14, 0, 0)}) == '2021-06-14'
|
||||
|
||||
|
||||
def test_convert_as_set():
|
||||
def test_convert_as_set(pub):
|
||||
tmpl = Template('{{ foo|set|join:","}}')
|
||||
|
||||
def render(value):
|
||||
|
|
|
@ -255,6 +255,8 @@ class Template:
|
|||
self.value = value
|
||||
self.raises = raises
|
||||
|
||||
disable_ezt = get_publisher().has_site_option('disable-ezt-support')
|
||||
|
||||
if ('{{' in value or '{%' in value) and not ezt_only: # Django template
|
||||
self.format = 'django'
|
||||
self.render = self.django_render
|
||||
|
@ -269,7 +271,7 @@ class Template:
|
|||
raise TemplateError(_('syntax error in Django template: %s'), e)
|
||||
self.render = self.null_render
|
||||
|
||||
elif '[' in value and '<!--[if gte' not in value:
|
||||
elif '[' in value and '<!--[if gte' not in value and (ezt_only or not disable_ezt):
|
||||
# ezt template with protection against office copy/paste.
|
||||
self.format = 'ezt'
|
||||
self.render = self.ezt_render
|
||||
|
|
Loading…
Reference in New Issue