summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-11-22 18:52:55 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-11-23 11:53:53 +0100
commit47a131b9446eb9b31e57554f17310bc2fd43a26f (patch)
tree6e13b9161d5289f8a56c46b5b7ffe9aa4e70deb3
parent37505b6397058bcc3460f23d48a7de9641cd6ef0 (diff)
Encapsulated TEMPLATE_STRING_IF_INVALID in Engine.
-rw-r--r--django/template/base.py25
-rw-r--r--django/templatetags/i18n.py2
-rw-r--r--tests/template_tests/tests.py15
3 files changed, 16 insertions, 26 deletions
diff --git a/django/template/base.py b/django/template/base.py
index 6044226254..85bafdd3b4 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -71,10 +71,6 @@ libraries = {}
# global list of libraries to load by default for a new parser
builtins = []
-# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means
-# uninitialized.
-invalid_var_format_string = None
-
class TemplateSyntaxError(Exception):
pass
@@ -601,15 +597,14 @@ class FilterExpression(object):
if ignore_failures:
obj = None
else:
- if settings.TEMPLATE_STRING_IF_INVALID:
- global invalid_var_format_string
- if invalid_var_format_string is None:
- invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
- if invalid_var_format_string:
- return settings.TEMPLATE_STRING_IF_INVALID % self.var
- return settings.TEMPLATE_STRING_IF_INVALID
+ string_if_invalid = context.engine.string_if_invalid
+ if string_if_invalid:
+ if '%s' in string_if_invalid:
+ return string_if_invalid % self.var
+ else:
+ return string_if_invalid
else:
- obj = settings.TEMPLATE_STRING_IF_INVALID
+ obj = string_if_invalid
else:
obj = self.var
for func, args in self.filters:
@@ -794,7 +789,7 @@ class Variable(object):
if getattr(current, 'do_not_call_in_templates', False):
pass
elif getattr(current, 'alters_data', False):
- current = settings.TEMPLATE_STRING_IF_INVALID
+ current = context.engine.string_if_invalid
else:
try: # method call (assuming no args required)
current = current()
@@ -802,12 +797,12 @@ class Variable(object):
try:
getcallargs(current)
except TypeError: # arguments *were* required
- current = settings.TEMPLATE_STRING_IF_INVALID # invalid method call
+ current = context.engine.string_if_invalid # invalid method call
else:
raise
except Exception as e:
if getattr(e, 'silent_variable_failure', False):
- current = settings.TEMPLATE_STRING_IF_INVALID
+ current = context.engine.string_if_invalid
else:
raise
diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py
index 96560d8068..d9db91a413 100644
--- a/django/templatetags/i18n.py
+++ b/django/templatetags/i18n.py
@@ -149,7 +149,7 @@ class BlockTranslateNode(Node):
result = translation.pgettext(message_context, singular)
else:
result = translation.ugettext(singular)
- default_value = settings.TEMPLATE_STRING_IF_INVALID
+ default_value = context.engine.string_if_invalid
def render_value(key):
if key in context:
diff --git a/tests/template_tests/tests.py b/tests/template_tests/tests.py
index 397c6c4e11..18c2e1703c 100644
--- a/tests/template_tests/tests.py
+++ b/tests/template_tests/tests.py
@@ -12,8 +12,7 @@ from django import template
from django.conf import settings
from django.contrib.auth.models import Group
from django.core import urlresolvers
-from django.template import (base as template_base, loader, Context,
- RequestContext, Template, TemplateSyntaxError)
+from django.template import loader, Context, RequestContext, Template, TemplateSyntaxError
from django.template.engine import Engine
from django.template.loaders import app_directories, filesystem
from django.test import RequestFactory, TestCase
@@ -550,14 +549,15 @@ class TemplateTests(TestCase):
failures = []
tests = sorted(template_tests.items())
- # Set TEMPLATE_STRING_IF_INVALID to a known string.
- expected_invalid_str = 'INVALID'
-
# Warm the URL reversing cache. This ensures we don't pay the cost
# warming the cache during one of the tests.
urlresolvers.reverse('named.client', args=(0,))
for name, vals in tests:
+
+ # Set TEMPLATE_STRING_IF_INVALID to a known string.
+ expected_invalid_str = 'INVALID'
+
if isinstance(vals[2], tuple):
normal_string_result = vals[2][0]
invalid_string_result = vals[2][1]
@@ -565,7 +565,6 @@ class TemplateTests(TestCase):
if isinstance(invalid_string_result, tuple):
expected_invalid_str = 'INVALID %s'
invalid_string_result = invalid_string_result[0] % invalid_string_result[1]
- template_base.invalid_var_format_string = True
try:
template_debug_result = vals[2][2]
@@ -622,10 +621,6 @@ class TemplateTests(TestCase):
Engine.get_default().template_loaders[0].reset()
- if template_base.invalid_var_format_string:
- expected_invalid_str = 'INVALID'
- template_base.invalid_var_format_string = False
-
self.assertEqual(failures, [], "Tests failed:\n%s\n%s" %
('-' * 70, ("\n%s\n" % ('-' * 70)).join(failures)))