Commit 02add435 authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #21417 -- Expanded TEMPLATE_STRING_IF_INVALID in blocktrans

Thanks keturn for the reporti, Chris Medrela for details and
Tim Graham for the review.
Refs #19915.
parent 8847a0c6
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -150,8 +150,14 @@ class BlockTranslateNode(Node):
            else:
                result = translation.ugettext(singular)
        default_value = settings.TEMPLATE_STRING_IF_INVALID
        render_value = lambda v: render_value_in_context(
            context.get(v, default_value), context)

        def render_value(key):
            if key in context:
                val = context[key]
            else:
                val = default_value % key if '%s' in default_value else default_value
            return render_value_in_context(val, context)

        data = dict((v, render_value(v)) for v in vars)
        context.pop()
        try:
+2 −0
Original line number Diff line number Diff line
@@ -1507,6 +1507,8 @@ class TemplateTests(TestCase):
            'invalidstr04_2': ('{% if var|default:"Foo" %}Yes{% else %}No{% endif %}', {}, 'Yes'),
            'invalidstr05': ('{{ var }}', {}, ('', ('INVALID %s', 'var'))),
            'invalidstr06': ('{{ var.prop }}', {'var': {}}, ('', ('INVALID %s', 'var.prop'))),
            'invalidstr07': ('{% load i18n %}{% blocktrans %}{{ var }}{% endblocktrans %}',
                             {}, ('', ('INVALID %s', 'var'))),

            ### MULTILINE #############################################################