[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:
parent
3e26abe6ee
commit
103cea2da0
|
@ -693,12 +693,11 @@ class ManyToOneConverter(osv.AbstractModel):
|
||||||
_name = 'ir.qweb.field.many2one'
|
_name = 'ir.qweb.field.many2one'
|
||||||
_inherit = 'ir.qweb.field'
|
_inherit = 'ir.qweb.field'
|
||||||
|
|
||||||
def value_to_html(self, cr, uid, value, column, options=None, context=None):
|
def record_to_html(self, cr, uid, field_name, record, column, options=None, context=None):
|
||||||
# value may be a browse_null
|
[read] = record.read([field_name])
|
||||||
if not value: return ''
|
_, value = read[field_name]
|
||||||
name_got = value._model.name_get(
|
|
||||||
cr, openerp.SUPERUSER_ID, value.id, context=context)[0][1]
|
return werkzeug.utils.escape(value).replace('\n', '<br>\n')
|
||||||
return werkzeug.utils.escape(name_got).replace('\n', '<br>\n')
|
|
||||||
|
|
||||||
class HTMLConverter(osv.AbstractModel):
|
class HTMLConverter(osv.AbstractModel):
|
||||||
_name = 'ir.qweb.field.html'
|
_name = 'ir.qweb.field.html'
|
||||||
|
|
|
@ -209,15 +209,27 @@ class TestTextExport(TestBasicExport):
|
||||||
|
|
||||||
class TestMany2OneExport(TestBasicExport):
|
class TestMany2OneExport(TestBasicExport):
|
||||||
def test_many2one(self):
|
def test_many2one(self):
|
||||||
converter = self.get_converter('many2one')
|
|
||||||
Sub = self.registry('test_converter.test_model.sub')
|
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")
|
self.assertEqual(value, "Foo")
|
||||||
|
|
||||||
id1 = Sub.create(self.cr, self.uid, {'name': "Fo<b>o</b>"})
|
value = converter(self.Model.browse(self.cr, self.uid, id1))
|
||||||
value = converter(Sub.browse(self.cr, self.uid, id1))
|
|
||||||
self.assertEqual(value, "Fo<b>o</b>")
|
self.assertEqual(value, "Fo<b>o</b>")
|
||||||
|
|
||||||
class TestBinaryExport(TestBasicExport):
|
class TestBinaryExport(TestBasicExport):
|
||||||
|
|
Loading…
Reference in New Issue