From dd7fa4aeaa5be49044c2f932c47e0daba5318666 Mon Sep 17 00:00:00 2001 From: Chase Sterling Date: Thu, 5 Jul 2012 15:43:14 -0400 Subject: [PATCH] Prevent default filter from throwing UndefinedError when boolean flag is used with StrictUndefined. --- jinja2/filters.py | 2 +- jinja2/testsuite/api.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/jinja2/filters.py b/jinja2/filters.py index 8fef6eaa..52a456b3 100644 --- a/jinja2/filters.py +++ b/jinja2/filters.py @@ -276,7 +276,7 @@ def do_default(value, default_value=u'', boolean=False): {{ ''|default('the string was empty', true) }} """ - if (boolean and not value) or isinstance(value, Undefined): + if isinstance(value, Undefined) or (boolean and not value): return default_value return value diff --git a/jinja2/testsuite/api.py b/jinja2/testsuite/api.py index c8f96347..4c2e42c3 100644 --- a/jinja2/testsuite/api.py +++ b/jinja2/testsuite/api.py @@ -214,6 +214,7 @@ class UndefinedTestCase(JinjaTestCase): self.assert_equal(env.from_string('{{ missing is not defined }}').render(), 'True') self.assert_raises(UndefinedError, env.from_string('{{ foo.missing }}').render, foo=42) self.assert_raises(UndefinedError, env.from_string('{{ not missing }}').render) + self.assert_equal(env.from_string('{{ missing|default("default", true) }}').render(), 'default') def test_indexing_gives_undefined(self): t = Template("{{ var[42].foo }}") -- 2.47.2