[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
This commit is contained in:
Xavier Morel 2013-12-02 10:56:38 +01:00
parent 3e26abe6ee
commit 103cea2da0
2 changed files with 22 additions and 11 deletions

View File

@ -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', '<br>\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', '<br>\n')
class HTMLConverter(osv.AbstractModel):
_name = 'ir.qweb.field.html'

View File

@ -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': "Fo<b>o</b>"})
})
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': "Fo<b>o</b>"})
value = converter(Sub.browse(self.cr, self.uid, id1))
value = converter(self.Model.browse(self.cr, self.uid, id1))
self.assertEqual(value, "Fo&lt;b&gt;o&lt;/b&gt;")
class TestBinaryExport(TestBasicExport):