[FIX] P3: arch should be unicode

This commit is contained in:
Xavier Morel
2017-08-20 23:25:54 +02:00
committed by Olivier Dony
parent 748bba42ca
commit b8f0ed664c
3 changed files with 13 additions and 15 deletions
+6 -6
View File
@@ -191,29 +191,29 @@ class TestViewSaving(common.TransactionCase):
def test_save_escaped_text(self):
""" Test saving html special chars in text nodes """
view = self.env['ir.ui.view'].create({
'arch': '<t t-name="dummy"><p><h1>hello world</h1></p></t>',
'arch': u'<t t-name="dummy"><p><h1>hello world</h1></p></t>',
'type': 'qweb'
})
# script and style text nodes should not escaped client side
replacement = '<script>1 && "hello & world"</script>'
replacement = u'<script>1 && "hello & world"</script>'
view.save(replacement, xpath='/t/p/h1')
self.assertIn(
replacement.replace('&', '&amp;'),
replacement.replace(u'&', u'&amp;'),
view.arch,
'inline script should be escaped server side'
)
self.assertIn(
replacement,
view.render(),
view.render().decode('utf-8'),
'inline script should not be escaped when rendering'
)
# common text nodes should be be escaped client side
replacement = 'world &amp;amp; &amp;lt;b&amp;gt;cie'
replacement = u'world &amp;amp; &amp;lt;b&amp;gt;cie'
view.save(replacement, xpath='/t/p')
self.assertIn(replacement, view.arch, 'common text node should not be escaped server side')
self.assertIn(
replacement,
view.render().replace('&', '&amp;'),
view.render().decode('utf-8').replace(u'&', u'&amp;'),
'text node characters wrongly unescaped when rendering'
)
+1 -1
View File
@@ -484,7 +484,7 @@ class FileSystemLoader(object):
if node.get('t-name') == name:
root = etree.Element('templates')
root.append(deepcopy(node))
arch = etree.tostring(root, encoding='utf-8')
arch = etree.tostring(root, encoding='unicode')
return arch
@@ -123,7 +123,7 @@ class TestCurrencyExport(TestExport):
converted, u'<span class="oe_currency_value">\u20110.12</span>'
u'\N{NO-BREAK SPACE}{symbol}'.format(
obj=obj,
symbol=currency.symbol.encode('utf-8')
symbol=currency.symbol
),)
def test_currency_pre(self):
@@ -136,9 +136,9 @@ class TestCurrencyExport(TestExport):
self.assertEqual(
converted,
u'{symbol}\N{NO-BREAK SPACE}'
'<span class="oe_currency_value">0.12</span>'.format(
u'<span class="oe_currency_value">0.12</span>'.format(
obj=obj,
symbol=currency.symbol.encode('utf-8')
symbol=currency.symbol
),)
def test_currency_precision(self):
@@ -151,10 +151,10 @@ class TestCurrencyExport(TestExport):
self.assertEqual(
converted,
'<span class="oe_currency_value">0.12</span>'
u'<span class="oe_currency_value">0.12</span>'
u'\N{NO-BREAK SPACE}{symbol}'.format(
obj=obj,
symbol=currency.symbol.encode('utf-8')
symbol=currency.symbol
),)
@@ -217,9 +217,7 @@ class TestBinaryExport(TestBasicExport):
value = converter.value_to_html(encoded_content, {})
self.assertEqual(
value, b'<img src="data:image/jpeg;base64,%s">' % (
encoded_content
))
value, u'<img src="data:image/jpeg;base64,%s">' % encoded_content.decode('ascii'))
with open(os.path.join(directory, 'test_vectors', 'pdf'), 'rb') as f:
content = f.read()