From 2d32f794b85876ac9b80e757ae08ee73ba3b858a Mon Sep 17 00:00:00 2001 From: Tekunov Daniil Date: Mon, 2 Sep 2019 14:51:56 +0300 Subject: [PATCH 1/2] Added fix for #1020 issue Added workaround for the case, explained in #1020 issue --- jinja2/nativetypes.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/jinja2/nativetypes.py b/jinja2/nativetypes.py index 31309bca7..5b5f9660f 100644 --- a/jinja2/nativetypes.py +++ b/jinja2/nativetypes.py @@ -209,13 +209,26 @@ def render(self, *args, **kwargs): vars = dict(*args, **kwargs) try: - return native_concat(self.root_render_func(self.new_context(vars))) + rendered_result = native_concat(self.root_render_func(self.new_context(vars))) + try: + splitted_rendered_result = rendered_result.split(', ') + if len(splitted_rendered_result) > 1 and\ + all(isinstance(value, str) for value in vars.values()) and\ + all(isinstance(key, str) for key in vars.keys()): + return "\'" + "\', \'".join(splitted_rendered_result) + "\'" + else: + return rendered_result + except: + return rendered_result + except Exception: exc_info = sys.exc_info() return self.environment.handle_exception(exc_info, True) + + class NativeEnvironment(Environment): """An environment that renders templates to native Python types.""" From 06ad1a838364901e4545e0f32360e9067545b080 Mon Sep 17 00:00:00 2001 From: Tekunov Daniil Date: Mon, 2 Sep 2019 14:53:26 +0300 Subject: [PATCH 2/2] Added test, that covers #1020 issue --- tests/test_nativetypes.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_nativetypes.py b/tests/test_nativetypes.py index 769bbc0a5..c97e68da7 100644 --- a/tests/test_nativetypes.py +++ b/tests/test_nativetypes.py @@ -114,3 +114,9 @@ def test_string(self, env): result = t.render() assert isinstance(result, text_type) assert result == "[all]" + + def test_parsing(self, env): + t = env.from_string("'{{ foo }}', '{{ bar }}', '{{ baz }}'") + rendered = t.render(foo='foobar', bar='barbaz', baz='bazfoo') + assert(rendered == u"'foobar', 'barbaz', 'bazfoo'") +