From 4b0921fa45775c679bb4c9e2254ac0beb9f3b97b Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Tue, 30 Aug 2022 17:06:17 +0000 Subject: [PATCH] [FIX] base: do not leave blocks In form views, when wrapping nodes within a node to set a group, the web client no longer set the field labels before the field. Therefore, remove these node before sending them to the web client. e.g. ```xml ``` closes odoo/odoo#99266 Signed-off-by: Denis Ledoux (dle) --- odoo/addons/base/models/ir_ui_view.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/odoo/addons/base/models/ir_ui_view.py b/odoo/addons/base/models/ir_ui_view.py index e1a54ea0350..7a1cc2bcdc7 100644 --- a/odoo/addons/base/models/ir_ui_view.py +++ b/odoo/addons/base/models/ir_ui_view.py @@ -970,7 +970,20 @@ actual arch. be removed from the view to people who are not members. """ if node.get('groups'): - if not self.user_has_groups(groups=node.get('groups')): + if not self.user_has_groups(groups=node.attrib.pop('groups')): + node.getparent().remove(node) + elif node.tag == 't' and not node.attrib: + # Move content of blocks with no other instructions than just "groups=" to the parent + # and remove the node. + # This is to keep the structure + # + # + # + # + # so the web client adds the label as expected. + node_info['children'] = list(node) + for child in reversed(node): + node.addnext(child) node.getparent().remove(node) def _get_view_refs(self, node):