From 5dec69c35d1cd5e6fb2d8bc605953615991e685e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 15 Sep 2016 18:05:01 +0200 Subject: [PATCH] [REV] fix `ir.qweb#render()` return type This commit reverts the API change introduced in b3302398bc79f107588ff755666bf74a2ef4e11a that changes `ir.qweb#render()` to return a unicode string instead of a utf8 encoded bytestring. Returning a unicode string is undoubtedly cleaner and a step in the direction of python 3 but still is an API change that can break third party modules. Let's wait the migration to python 3 before breaking other people's toys. --- addons/report/models/report.py | 4 +++- openerp/addons/base/ir/ir_qweb/qweb.py | 2 +- openerp/addons/base/tests/test_qweb.py | 10 +++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/addons/report/models/report.py b/addons/report/models/report.py index 82f9eaca9cd..ddaeef4825d 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -140,7 +140,7 @@ class Report(osv.Model): 'doc_model': report.model, 'docs': docs, } - return self.render(cr, uid, [], report.report_name, docargs, context=context).encode('utf-8') + return self.render(cr, uid, [], report.report_name, docargs, context=context) @api.v8 def get_html(self, records, report_name, data=None): @@ -183,6 +183,8 @@ class Report(osv.Model): if isinstance(cr, TestCursor): return html + html = html.decode('utf-8') # Ensure the current document is utf-8 encoded. + # Get the ir.actions.report.xml record we are working on. report = self._get_report_from_name(cr, uid, report_name) # Check if we have to save the report or if we have to get one from the db. diff --git a/openerp/addons/base/ir/ir_qweb/qweb.py b/openerp/addons/base/ir/ir_qweb/qweb.py index b414da72113..4b915d9da79 100644 --- a/openerp/addons/base/ir/ir_qweb/qweb.py +++ b/openerp/addons/base/ir/ir_qweb/qweb.py @@ -244,7 +244,7 @@ class QWeb(object): """ body = [] self.compile(template, options)(self, body.append, values or {}) - return u''.join(body) + return u''.join(body).encode('utf8') def compile(self, template, options): """ Compile the given template into a rendering function:: diff --git a/openerp/addons/base/tests/test_qweb.py b/openerp/addons/base/tests/test_qweb.py index 949fc72ad3e..0210b03df05 100644 --- a/openerp/addons/base/tests/test_qweb.py +++ b/openerp/addons/base/tests/test_qweb.py @@ -25,7 +25,7 @@ class TestQWebTField(TransactionCase): field = etree.Element('span', {'t-field': u'company.name'}) company = self.env['res.company'].create({'name': "My Test Company"}) - result = self.engine.render(field, {'company': company}).encode('utf-8') + result = self.engine.render(field, {'company': company}) self.assertEqual( result, '3, now 20% off!" company = self.env['res.company'].create({'name': s}) - result = self.engine.render(field, {'company': company}).encode('utf-8') + result = self.engine.render(field, {'company': company}) self.assertEqual( result, '