I have a many2many field where as I select the fields they should be dynamically represented on a page inside the notebook. I can dynamically create the page inside the notebook, but I can't introduce fields inside the respective page. I'm using etree to be able to manipulate the XML inside the Python file, but I can't finish the project, does anyone have any suggestions?
Python code:
@api.model def fields_view_get(self, view_id=None, view_type="form", toolbar=False, submenu=False): res = super().fields_view_get( view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu ) if view_type == "form": doc = etree.XML(res["arch"]) form_view_id = self.env['ir.model.data']._xmlid_to_res_id('texponto_product_customization.product_customization_template_view_form') if res.get('view_id') == form_view_id: target = doc.xpath("//notebook") if target: target = target[0] if not doc.xpath("//page[@name='Test']"): target.append(doc.makeelement("page", {"name": "Test", "string": "Test1"}) , "field", {"name": "customizable_lines_ids"}, "tree", {"editable": "bottom"}, "field", {"name": "position_ids", "widget": "many2many_tags"}, "field", {"name": "print_filter_ids", "widget": "many2many_tags"})) res["arch"] = etree.tostring(doc, encoding="unicode") return res
Expected XML Structure inside notebook:
<page string="Teste">
<field name="customizable_lines_ids">
<tree editable="bottom">
<field name="position_ids" widget="many2many_tags"/>
<field name="print_filter_ids" widget="many2many_tags"/>
tree>
field>
page>