aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2017-01-07 02:44:37 +0100
committerArmin Ronacher <armin.ronacher@active-4.com>2017-01-07 02:44:37 +0100
commit01d9e7e906386d24ef3d067bee40401a138098e6 (patch)
tree1f18463a483c3c75cdbf7c3f787b8b14a386b814
parente8ef8aaceea50af07a14fcfb26360d3cf9715639 (diff)
downloadjinja-01d9e7e906386d24ef3d067bee40401a138098e6.tar.gz
Smaller fixes to stuff that broke on 3.x
-rw-r--r--jinja2/asyncfilters.py2
-rw-r--r--jinja2/nodes.py7
-rw-r--r--tests/test_filters.py2
3 files changed, 10 insertions, 1 deletions
diff --git a/jinja2/asyncfilters.py b/jinja2/asyncfilters.py
index d12afaf4..5c1f46d7 100644
--- a/jinja2/asyncfilters.py
+++ b/jinja2/asyncfilters.py
@@ -47,6 +47,8 @@ def dualfilter(normal_filter, async_filter):
if wrap_evalctx:
wrapper.evalcontextfilter = True
+ wrapper.asyncfiltervariant = True
+
return wrapper
diff --git a/jinja2/nodes.py b/jinja2/nodes.py
index 76f7814c..4d62cccb 100644
--- a/jinja2/nodes.py
+++ b/jinja2/nodes.py
@@ -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):
diff --git a/tests/test_filters.py b/tests/test_filters.py
index 1a8a1640..2e85a9a5 100644
--- a/tests/test_filters.py
+++ b/tests/test_filters.py
@@ -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'}