From 103cea2da0016ff780db5e127fb31ab14771551b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 2 Dec 2013 10:56:38 +0100 Subject: [PATCH] [FIX] change ManyToOne converter to use read on parent record and pass the browse_record's context through avoids access rights issue, can be used for automagical formatting of address on res.partner bzr revid: xmo@openerp.com-20131202095638-hoj7sxvax5808irc --- openerp/addons/base/ir/ir_qweb.py | 11 +++++----- .../addons/test_converter/tests/test_html.py | 22 ++++++++++++++----- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index d2c9520cd6e..ea6224a1ad9 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -693,12 +693,11 @@ class ManyToOneConverter(osv.AbstractModel): _name = 'ir.qweb.field.many2one' _inherit = 'ir.qweb.field' - def value_to_html(self, cr, uid, value, column, options=None, context=None): - # value may be a browse_null - if not value: return '' - name_got = value._model.name_get( - cr, openerp.SUPERUSER_ID, value.id, context=context)[0][1] - return werkzeug.utils.escape(name_got).replace('\n', '
\n') + def record_to_html(self, cr, uid, field_name, record, column, options=None, context=None): + [read] = record.read([field_name]) + _, value = read[field_name] + + return werkzeug.utils.escape(value).replace('\n', '
\n') class HTMLConverter(osv.AbstractModel): _name = 'ir.qweb.field.html' diff --git a/openerp/tests/addons/test_converter/tests/test_html.py b/openerp/tests/addons/test_converter/tests/test_html.py index aaa0c12cdf5..b6f787d647a 100644 --- a/openerp/tests/addons/test_converter/tests/test_html.py +++ b/openerp/tests/addons/test_converter/tests/test_html.py @@ -209,15 +209,27 @@ class TestTextExport(TestBasicExport): class TestMany2OneExport(TestBasicExport): def test_many2one(self): - converter = self.get_converter('many2one') Sub = self.registry('test_converter.test_model.sub') - id0 = Sub.create(self.cr, self.uid, {'name': "Foo"}) - value = converter(Sub.browse(self.cr, self.uid, id0)) + + id0 = self.Model.create(self.cr, self.uid, { + 'many2one': Sub.create(self.cr, self.uid, {'name': "Foo"}) + }) + id1 = self.Model.create(self.cr, self.uid, { + 'many2one': Sub.create(self.cr, self.uid, {'name': "Foo"}) + }) + + def converter(record): + column = self.get_column('many2one') + model = self.registry('ir.qweb.field.many2one') + + return model.record_to_html( + self.cr, self.uid, 'many2one', record, column) + + value = converter(self.Model.browse(self.cr, self.uid, id0)) self.assertEqual(value, "Foo") - id1 = Sub.create(self.cr, self.uid, {'name': "Foo"}) - value = converter(Sub.browse(self.cr, self.uid, id1)) + value = converter(self.Model.browse(self.cr, self.uid, id1)) self.assertEqual(value, "Fo<b>o</b>") class TestBinaryExport(TestBasicExport):