Loading django/template/base.py +10 −15 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -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() Loading @@ -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 Loading django/templatetags/i18n.py +1 −1 Original line number Diff line number Diff line Loading @@ -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: Loading tests/template_tests/tests.py +5 −10 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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] Loading @@ -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] Loading Loading @@ -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))) Loading Loading
django/template/base.py +10 −15 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -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() Loading @@ -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 Loading
django/templatetags/i18n.py +1 −1 Original line number Diff line number Diff line Loading @@ -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: Loading
tests/template_tests/tests.py +5 −10 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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] Loading @@ -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] Loading Loading @@ -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))) Loading