[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:
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user