]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Smaller fixes to stuff that broke on 3.x
authorArmin Ronacher <armin.ronacher@active-4.com>
Sat, 7 Jan 2017 01:44:37 +0000 (02:44 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sat, 7 Jan 2017 01:44:37 +0000 (02:44 +0100)
jinja2/asyncfilters.py
jinja2/nodes.py
tests/test_filters.py

index d12afaf4909f0983ff96f6a43708c66d408a3778..5c1f46d7fa7d46cff7711321b477f287632ef5e1 100644 (file)
@@ -47,6 +47,8 @@ def dualfilter(normal_filter, async_filter):
     if wrap_evalctx:
         wrapper.evalcontextfilter = True
 
+    wrapper.asyncfiltervariant = True
+
     return wrapper
 
 
index 76f7814cfa8e62527d5a8b49da7f9bc7bfc0fc0d..4d62cccb865c8ee8792c759abb3f7128a56e1836 100644 (file)
@@ -592,6 +592,13 @@ class Filter(Expr):
         filter_ = self.environment.filters.get(self.name)
         if filter_ is None or getattr(filter_, 'contextfilter', False):
             raise Impossible()
+
+        # We cannot constant handle async filters, so we need to make sure
+        # to not go down this path.
+        if eval_ctx.environment.is_async and \
+           getattr(filter_, 'asyncfiltervariant', False):
+            raise Impossible()
+
         obj = self.node.as_const(eval_ctx)
         args = [obj] + [x.as_const(eval_ctx) for x in self.args]
         if getattr(filter_, 'evalcontextfilter', False):
index 1a8a1640e43a73014c692476fa305c596af10286..2e85a9a50efca5f16ea2106c224a2949409ab2e1 100644 (file)
@@ -581,7 +581,7 @@ class TestFilter(object):
         env = Environment(autoescape=True)
         t = env.from_string('{{ x|tojson }}')
         assert t.render(x={'foo': 'bar'}) == '{&#34;foo&#34;: &#34;bar&#34;}'
-        assert t.render(x='"bar\'') == '&#34;\&#34;bar\u0027&#34;'
+        assert t.render(x='"bar\'') == r'&#34;\&#34;bar\u0027&#34;'
 
         def my_dumps(value, **options):
             assert options == {'foo': 'bar'}