[FIX] base: fix qweb t-field with default value

Since 5913b7265e it was not possible
anymore to use default value with `t-field`, this commit restore the
previous behavior.

closes odoo/odoo#98453

X-original-commit: 12dc2353f572d097fc57ec723a11651a8471fdf5
Signed-off-by: Rémy Voet <ryv@odoo.com>
This commit is contained in:
Xavier ALT
2022-08-19 14:28:19 +02:00
parent df9c2967f0
commit a91b53ed1d
2 changed files with 46 additions and 1 deletions
+2 -1
View File
@@ -1931,7 +1931,8 @@ class IrQWeb(models.AbstractModel):
values['__qweb_attrs__'] = field_attrs
else:
values['__qweb_attrs__'].update(field_attrs)
content = self._compile_to_str(content)
if content is not None and content is not False:
content = self._compile_to_str(content)
""", level))
force_display_dependent = True
else:
+44
View File
@@ -100,6 +100,50 @@ class TestQWebTField(TransactionCase):
doc = etree.fromstring(rendered)
self.assertEqual(len(doc.xpath('//script')), 1)
def test_default_value(self):
Partner = self.env['res.partner']
t = self.env['ir.ui.view'].create({
'name': 'test',
'type': 'qweb',
'arch_db': '''<t t-name="out-field-default">
<div t-field="record.name">
DEFAULT
<t t-out="'Text'" />
</div>
</t>''',
})
# record.name is non-empty
result = """
<div>My Company</div>
"""
rendered = self.env['ir.qweb']._render(t.id, {
'record': Partner.new({'name': 'My Company'})
})
self.assertEqual(str(rendered.strip()), result.strip(), "")
# record.name is empty but not False or None, we should render depending on force_display
result = """
<div></div>
"""
rendered = self.env['ir.qweb']._render(t.id, {
'record': Partner.new({'name': ''})
})
self.assertEqual(str(rendered.strip()), result.strip())
# record.name is False or None, we should render field default value
result = """
<div>
DEFAULT
Text
</div>
"""
rendered = self.env['ir.qweb']._render(t.id, {
'record': Partner.new({})
})
self.assertEqual(str(rendered.strip()), result.strip())
class TestQWebNS(TransactionCase):
def test_render_static_xml_with_namespace(self):
""" Test the rendering on a namespaced view with no static content. The resulting string should be untouched.