diff --git a/odoo/addons/base/models/ir_qweb.py b/odoo/addons/base/models/ir_qweb.py index 8e2ef1f41a8..bb9d574224d 100644 --- a/odoo/addons/base/models/ir_qweb.py +++ b/odoo/addons/base/models/ir_qweb.py @@ -1655,14 +1655,12 @@ class IrQWeb(models.AbstractModel): if not VARNAME_REGEXP.match(expr_as): raise ValueError(f'The varname {expr_as!r} can only contain alphanumeric characters and underscores.') + if el.tag.lower() == 't': + self._rstrip_text(options) - strip = self._rstrip_text(options) code = self._flush_text(options, level) - content_foreach = [] - if strip and el.tag.lower() != 't': - self._append_text(strip, options) - content_foreach.extend( + content_foreach = ( self._compile_directives(el, options, level + 1) + self._flush_text(options, level + 1, rstrip=True)) diff --git a/odoo/addons/base/tests/test_qweb.py b/odoo/addons/base/tests/test_qweb.py index b3897c2699c..e731cc93ebd 100644 --- a/odoo/addons/base/tests/test_qweb.py +++ b/odoo/addons/base/tests/test_qweb.py @@ -1538,7 +1538,32 @@ class TestQWebBasic(TransactionCase): self.assertEqual(str(rendered).strip(), result.strip()) - def test_space_remove_technical_space(self): + def test_space_remove_technical_space_t_foreach(self): + view = self.env['ir.ui.view'].create({ + 'name': 'master', + 'type': 'qweb', + 'arch_db': ''' +
+
+ +
+ +
+
'''}) + + result = ''' +
+
0
1
2
+
0
+
1
+
2
+
''' + + rendered = self.env['ir.qweb']._render(view.id) + + self.assertEqual(str(rendered), result) + + def test_space_remove_technical_all(self): test = self.env['ir.ui.view'].create({ 'name': 'test', 'type': 'qweb', @@ -1622,8 +1647,7 @@ class TestQWebBasic(TransactionCase):
0 -
-
+
1
@@ -1638,7 +1662,6 @@ class TestQWebBasic(TransactionCase): ''' rendered = self.env['ir.qweb']._render(view.id) - self.assertEqual(str(rendered), result) class FileSystemLoader(object):