Commit 6d863fef authored by Gary Wilson Jr's avatar Gary Wilson Jr
Browse files

Fixed #5270 -- Allow template tags and filters to accept an emtpy string, patch from jdunck.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8393 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 0ca73836
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -485,9 +485,14 @@ class FilterExpression(object):
                                           (token[:upto], token[upto:start], token[start:]))
            if var == None:
                var, constant, i18n_constant = match.group("var", "constant", "i18n_constant")
                if i18n_constant:
                if i18n_constant is not None:
                    # Don't pass the empty string to gettext, because the empty
                    # string translates to meta information.
                    if i18n_constant == "":
                        var = '""'
                    else:
                        var = '"%s"' %  _(i18n_constant.replace(r'\"', '"'))
                elif constant:
                elif constant is not None:
                    var = '"%s"' % constant.replace(r'\"', '"')
                upto = match.end()
                if var == None:
+6 −2
Original line number Diff line number Diff line
@@ -366,6 +366,9 @@ class Templates(unittest.TestCase):
            # Numbers as filter arguments should work
            'filter-syntax19': ('{{ var|truncatewords:1 }}', {"var": "hello world"}, "hello ..."),
            
            #filters should accept empty string constants
            'filter-syntax20': ('{{ ""|default_if_none:"was none" }}', {}, ""),

            ### COMMENT SYNTAX ########################################################
            'comment-syntax01': ("{# this is hidden #}hello", {}, "hello"),
            'comment-syntax02': ("{# this is hidden #}hello{# foo #}", {}, "hello"),
@@ -770,11 +773,12 @@ class Templates(unittest.TestCase):
            'i18n14': ('{% cycle "foo" _("Password") _(\'Password\') as c %} {% cycle c %} {% cycle c %}', {'LANGUAGE_CODE': 'de'}, 'foo Passwort Passwort'),
            'i18n15': ('{{ absent|default:_("Password") }}', {'LANGUAGE_CODE': 'de', 'absent': ""}, 'Passwort'),
            'i18n16': ('{{ _("<") }}', {'LANGUAGE_CODE': 'de'}, '<'),
            'i18n17': ('{{ _("") }}', {'LANGUAGE_CODE': 'de'}, ''),

            # Escaping inside blocktrans works as if it was directly in the
            # template.
            'i18n17': ('{% load i18n %}{% blocktrans with anton|escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
            'i18n18': ('{% load i18n %}{% blocktrans with anton|force_escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
            'i18n18': ('{% load i18n %}{% blocktrans with anton|escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
            'i18n19': ('{% load i18n %}{% blocktrans with anton|force_escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),

            ### HANDLING OF TEMPLATE_STRING_IF_INVALID ###################################