Escape backslash in the angular_escapes filter

Follow-up for Ic97c6f3b0e3c4c91323dcba82bfe43e252e16b1a.
Supersedes Icbf97fea50183702aaacbe3b9be0d44a5797df9a.

Change-Id: Idb58cebefab747f204e54ea6350db0852aec60f5
Co-Authored-By: Matt Borland <matt.borland@hpe.com>
Co-Authored-By: Tadeu Sampaio <tadeu@ufscar.br>
Closes-Bug: #1617749
This commit is contained in:
Paulo Matias 2016-09-01 15:57:34 -03:00
parent ccd20a9dd2
commit 5627065ee6
2 changed files with 21 additions and 0 deletions

View File

@ -66,6 +66,7 @@ def angular_escapes(value):
string with escaped values
"""
return value \
.replace('\\', '\\\\') \
.replace('"', '\\"') \
.replace("'", "\\'") \
.replace("\n", "\\n") \

View File

@ -112,6 +112,26 @@ class TemplateTagTests(test.TestCase):
context={'test': ctx_string})
self.assertEqual(expected, rendered_str)
def test_angular_escapes_filter(self):
ctx_string = {'val1': "\'a \"quotes\" test\'",
'val2': "how about line\r\nbreaks",
'val3': "\\s\\l\\a\\s\\h"}
text = ('{% autoescape off %}'
'<"{{ test.val1|angular_escapes }}",'
' "{{ test.val2|angular_escapes }}",'
' "{{ test.val3|angular_escapes }}">'
'{% endautoescape %}')
expected = (r""" <"\'a \"quotes\" test\'","""
r""" "how about line\r\nbreaks","""
r""" "\\s\\l\\a\\s\\h">""")
rendered_str = self.render_template(tag_require='angular',
template_text=text,
context={'test': ctx_string})
self.assertEqual(expected, rendered_str)
def test_horizon_main_nav(self):
text = "{% horizon_main_nav %}"
expected = """