In the normal course of saving-action, readonly fields are stripped out when sending data to the server. The SSF would reuse the same code when "saving" O2M lines to the parent record however that is not correct and would lead to misbehaving views as readonly (non-stored) fields used as "transients" (storing data within the extent of a record's edition session) would not behave properly. Fix by overriding the O2M Form's save so that readonly fields are kept and stored in the parent record. Closes #23620
129 lines
4.7 KiB
XML
129 lines
4.7 KiB
XML
<odoo>
|
|
<record id="action_test_o2m_onchange" model="ir.actions.act_window">
|
|
<field name="name">Test o2m onchange thing</field>
|
|
<field name="type">ir.actions.act_window</field>
|
|
<field name="res_model">test_testing_utilities.parent</field>
|
|
<field name="view_mode">tree,form</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_o2m" parent="base.menu_tests"
|
|
name="O2M onchange test thing"
|
|
action="action_test_o2m_onchange"/>
|
|
|
|
<record id="o2m_parent" model="ir.ui.view">
|
|
<field name="name">Parent External Form</field>
|
|
<field name="priority">1</field>
|
|
<field name="model">test_testing_utilities.parent</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<sheet>
|
|
<group>
|
|
<field name="value"/>
|
|
<field name="v"/>
|
|
</group>
|
|
<group>
|
|
<field name="subs"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
<record id="o2m_parent_readonly" model="ir.ui.view">
|
|
<field name="name">Parent readonly o2m field</field>
|
|
<field name="model">test_testing_utilities.parent</field>
|
|
<field name="inherit_id" ref="o2m_parent"/>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='subs']" position="attributes">
|
|
<attribute name="readonly">1</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
<record id="o2m_tree" model="ir.ui.view">
|
|
<field name="name">Sub regular</field>
|
|
<field name="priority">1</field>
|
|
<field name="model">test_testing_utilities.sub</field>
|
|
<field name="arch" type="xml">
|
|
<tree>
|
|
<field name="value"/>
|
|
<field name="v"/>
|
|
<field name="name"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="o2m_parent_ed" model="ir.ui.view">
|
|
<field name="name">Parent External Tree</field>
|
|
<field name="model">test_testing_utilities.parent</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<field name="value"/>
|
|
<field name="v"/>
|
|
<field name="subs" context="{'tree_view_ref': 'test_testing_utilities.editable_external'}"/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
<record id="editable_external" model="ir.ui.view">
|
|
<field name="name">Sub regular</field>
|
|
<field name="model">test_testing_utilities.sub</field>
|
|
<field name="arch" type="xml">
|
|
<tree editable="bottom">
|
|
<field name="value"/>
|
|
<field name="v"/>
|
|
<field name="name"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="o2m_parent_inline" model="ir.ui.view">
|
|
<field name="name">Parent Inline Tree</field>
|
|
<field name="model">test_testing_utilities.parent</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<field name="value"/>
|
|
<field name="v"/>
|
|
<field name="subs">
|
|
<tree editable="bottom">
|
|
<field name="value"/>
|
|
<field name="name"/>
|
|
</tree>
|
|
</field>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="non_normalized_attrs" model="ir.ui.view">
|
|
<field name="name">Non Normalised Domains</field>
|
|
<field name="model">test_testing_utilities.a</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<field name="f1"/>
|
|
<field name="f2" attrs="{'readonly': [['f1', '=', 63], ['f3', '=', 5]]}"/>
|
|
<field name="f3"/>
|
|
<field name="f4"/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="m2o_onchange_view" model="ir.ui.view">
|
|
<field name="name">Dynamic Onchange Test View</field>
|
|
<field name="model">test_testing_utilities.onchange_parent</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<sheet>
|
|
<notebook>
|
|
<page>
|
|
<field name="line_ids" widget="one2many_list" context="{'line_ids': line_ids}">
|
|
<tree editable="bottom">
|
|
<field name="dummy"/>
|
|
<field name="flag" invisible="1" readonly="1"/>
|
|
</tree>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
</odoo>
|