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 = '''
+ '''
+
+ 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):