From 132e9f72ed44aa89c6b5fdadd5bd05007a2bda5c Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 22 Aug 2023 13:45:46 +0200 Subject: [PATCH] [REF] *: rename onchange2 to onchange closes odoo/odoo#133049 Related: odoo/enterprise#46240 Signed-off-by: Raphael Collet --- addons/account/models/account_move.py | 4 +- .../base_automation/tests/test_automation.py | 2 +- addons/hr_holidays/models/hr_leave.py | 4 +- .../hr_holidays/models/hr_leave_allocation.py | 4 +- .../web/fields/onchange_on_keydown_tests.js | 2 +- .../static/tests/sale_product_field_tests.js | 4 +- addons/web/models/models.py | 4 +- .../relational_model/relational_model.js | 2 +- .../web/static/tests/helpers/mock_server.js | 2 +- .../tests/mobile/views/form_view_tests.js | 2 +- .../views/fields/ace_editor_field_tests.js | 2 +- .../tests/views/fields/char_field_tests.js | 2 +- .../tests/views/fields/color_field_tests.js | 4 +- .../views/fields/datetime_field_tests.js | 6 +- .../tests/views/fields/email_field_tests.js | 2 +- .../many2many_checkboxes_field_tests.js | 4 +- .../views/fields/many2many_field_tests.js | 18 +- .../fields/many2many_tags_field_tests.js | 4 +- .../views/fields/many2one_field_tests.js | 20 +- .../views/fields/one2many_field_tests.js | 176 +++++++++--------- .../views/fields/reference_field_tests.js | 4 +- .../views/fields/selection_field_tests.js | 2 +- .../tests/views/form/form_view_tests.js | 112 +++++------ .../tests/views/kanban/kanban_view_tests.js | 88 ++++----- .../web/static/tests/views/list_view_tests.js | 46 ++--- .../views/widgets/attach_document_tests.js | 2 +- .../webclient/actions/load_state_tests.js | 4 +- .../webclient/actions/server_action_tests.js | 2 +- .../tests/webclient/actions/target_tests.js | 6 +- .../webclient/actions/window_action_tests.js | 12 +- .../settings_form_view_tests.js | 18 +- odoo/addons/base/models/res_users.py | 4 +- odoo/addons/test_new_api/tests/__init__.py | 2 +- .../{test_onchange2.py => test_onchange.py} | 65 ++++--- .../test_new_api/tests/test_properties.py | 4 +- odoo/models.py | 13 +- odoo/tests/form.py | 2 +- 37 files changed, 324 insertions(+), 330 deletions(-) rename odoo/addons/test_new_api/tests/{test_onchange2.py => test_onchange.py} (95%) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 126b8a9dcb0..4103ab550a0 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -2519,7 +2519,7 @@ class AccountMove(models.Model): for move in self: move.display_name = move._get_move_display_name(show_ref=True) - def onchange2(self, values, field_names, fields_spec): + def onchange(self, values, field_names, fields_spec): # Since only one field can be changed at the same time (the record is # saved when changing tabs) we can avoid building the snapshots for the # other field @@ -2529,7 +2529,7 @@ class AccountMove(models.Model): elif 'invoice_line_ids' in field_names: values = {key: val for key, val in values.items() if key != 'line_ids'} fields_spec = {key: val for key, val in fields_spec.items() if key != 'line_ids'} - return super().onchange2(values, field_names, fields_spec) + return super().onchange(values, field_names, fields_spec) # ------------------------------------------------------------------------- # RECONCILIATION METHODS diff --git a/addons/base_automation/tests/test_automation.py b/addons/base_automation/tests/test_automation.py index 831b5a92fa8..39c9b434221 100644 --- a/addons/base_automation/tests/test_automation.py +++ b/addons/base_automation/tests/test_automation.py @@ -84,5 +84,5 @@ class TestAutomation(TransactionCase): self_portal = self.env["ir.filters"].with_user(self.env.ref("base.user_demo").id) # simulate a onchange call on name - result = self_portal.onchange2({}, [], {"name": {}, "active": {}}) + result = self_portal.onchange({}, [], {"name": {}, "active": {}}) self.assertEqual(result["value"]["active"], False) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index d78402680a8..0ee0a936b7d 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -840,14 +840,14 @@ class HolidaysRequest(models.Model): start=display_date, ) - def onchange2(self, values, field_names, fields_spec): + def onchange(self, values, field_names, fields_spec): # Try to force the leave_type display_name when creating new records # This is called right after pressing create and returns the display_name for # most fields in the view. if values and 'employee_id' in fields_spec and 'employee_id' not in self._context: employee_id = get_employee_from_context(values, self._context, self.env.user.employee_id.id) self = self.with_context(employee_id=employee_id) - return super().onchange2(values, field_names, fields_spec) + return super().onchange(values, field_names, fields_spec) def add_follower(self, employee_id): employee = self.env['hr.employee'].browse(employee_id) diff --git a/addons/hr_holidays/models/hr_leave_allocation.py b/addons/hr_holidays/models/hr_leave_allocation.py index f0b83196ac4..765d5f4ff37 100644 --- a/addons/hr_holidays/models/hr_leave_allocation.py +++ b/addons/hr_holidays/models/hr_leave_allocation.py @@ -538,14 +538,14 @@ class HolidaysAllocation(models.Model): # ORM Overrides methods #################################################### - def onchange2(self, values, field_names, fields_spec): + def onchange(self, values, field_names, fields_spec): # Try to force the leave_type display_name when creating new records # This is called right after pressing create and returns the display_name for # most fields in the view. if values and 'employee_id' in fields_spec and 'employee_id' not in self._context: employee_id = get_employee_from_context(values, self._context, self.env.user.employee_id.id) self = self.with_context(employee_id=employee_id) - return super().onchange2(values, field_names, fields_spec) + return super().onchange(values, field_names, fields_spec) @api.depends( 'holiday_type', 'mode_company_id', 'department_id', diff --git a/addons/mail/static/tests/web/fields/onchange_on_keydown_tests.js b/addons/mail/static/tests/web/fields/onchange_on_keydown_tests.js index 9375f7c63c7..16a37756754 100644 --- a/addons/mail/static/tests/web/fields/onchange_on_keydown_tests.js +++ b/addons/mail/static/tests/web/fields/onchange_on_keydown_tests.js @@ -54,7 +54,7 @@ QUnit.test( `, mockRPC(route, params) { - if (params.method === "onchange2") { + if (params.method === "onchange") { // the onchange will be called twice: at record creation & when keydown is detected // the second call should have our description value completed. assert.ok(true); diff --git a/addons/sale/static/tests/sale_product_field_tests.js b/addons/sale/static/tests/sale_product_field_tests.js index 630c4c4682e..f899c70468f 100644 --- a/addons/sale/static/tests/sale_product_field_tests.js +++ b/addons/sale/static/tests/sale_product_field_tests.js @@ -118,8 +118,8 @@ QUnit.module("Fields", (hooks) => { assert.containsOnce(target, ".modal:contains(Create new product as a new Product)") assert.verifySteps([ "get_views", - "onchange2", - "onchange2", + "onchange", + "onchange", "name_search", ]); diff --git a/addons/web/models/models.py b/addons/web/models/models.py index 32aee5e951e..141a2962286 100644 --- a/addons/web/models/models.py +++ b/addons/web/models/models.py @@ -886,7 +886,7 @@ class Base(models.AbstractModel): return { 'values': field_range, } - def onchange2(self, values: Dict, field_names: List[str], fields_spec: Dict): + def onchange(self, values: Dict, field_names: List[str], fields_spec: Dict): """ Perform an onchange on the given fields, and return the result. @@ -1062,7 +1062,7 @@ class Base(models.AbstractModel): while todo: # apply field-specific onchange methods for field_name in todo: - record._onchange_eval(field_name, "1", result) + record._apply_onchange_methods(field_name, result) done.add(field_name) if not env.context.get('recursive_onchanges', True): diff --git a/addons/web/static/src/model/relational_model/relational_model.js b/addons/web/static/src/model/relational_model/relational_model.js index 4496c2aa891..44811d01bf0 100644 --- a/addons/web/static/src/model/relational_model/relational_model.js +++ b/addons/web/static/src/model/relational_model/relational_model.js @@ -585,7 +585,7 @@ export class RelationalModel extends Model { } const spec = getFieldsSpec(activeFields, fields, evalContext, { withInvisible: true }); const args = [resId ? [resId] : [], changes, fieldNames, spec]; - const response = await this.orm.call(resModel, "onchange2", args, { context }); + const response = await this.orm.call(resModel, "onchange", args, { context }); if (response.warning) { const { type, title, message, className, sticky } = response.warning; if (type === "dialog") { diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 591b09cab0a..f942a07403f 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -607,7 +607,7 @@ export class MockServer { return this.mockNameCreate(args.model, args.args[0], args.kwargs); case "name_search": return this.mockNameSearch(args.model, args.args, args.kwargs); - case "onchange2": + case "onchange": return this.mockOnchange(args.model, args.args, args.kwargs); case "read": return this.mockRead(args.model, args.args); diff --git a/addons/web/static/tests/mobile/views/form_view_tests.js b/addons/web/static/tests/mobile/views/form_view_tests.js index 873dce7fbe7..29e16ca15b4 100644 --- a/addons/web/static/tests/mobile/views/form_view_tests.js +++ b/addons/web/static/tests/mobile/views/form_view_tests.js @@ -320,7 +320,7 @@ QUnit.module("Mobile Views", ({ beforeEach }) => { `, mockRPC(route, { method, args }) { - if (method === "onchange2" && args[2][0] === "display_name") { + if (method === "onchange" && args[2][0] === "display_name") { return onchangeDef; } }, diff --git a/addons/web/static/tests/views/fields/ace_editor_field_tests.js b/addons/web/static/tests/views/fields/ace_editor_field_tests.js index fae5ac0007b..57ff6d1f131 100644 --- a/addons/web/static/tests/views/fields/ace_editor_field_tests.js +++ b/addons/web/static/tests/views/fields/ace_editor_field_tests.js @@ -257,7 +257,7 @@ QUnit.module("Fields", (hooks) => { textArea.value = "a"; await triggerEvent(textArea, null, "input", {}); await triggerEvents(textArea, null, ["blur"]); - assert.verifySteps(['onchange2: [[1],{"foo":"a"},["foo"],{"display_name":{},"foo":{}}]']); + assert.verifySteps(['onchange: [[1],{"foo":"a"},["foo"],{"display_name":{},"foo":{}}]']); await click(target, ".o_form_button_save"); assert.verifySteps(['write: [[1],{"foo":"a"}]', "web_read: [[1]]"]); }); diff --git a/addons/web/static/tests/views/fields/char_field_tests.js b/addons/web/static/tests/views/fields/char_field_tests.js index dc84c95564b..50ea58ec8eb 100644 --- a/addons/web/static/tests/views/fields/char_field_tests.js +++ b/addons/web/static/tests/views/fields/char_field_tests.js @@ -749,7 +749,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, { method }) { - if (method === "onchange2") { + if (method === "onchange") { await def; } }, diff --git a/addons/web/static/tests/views/fields/color_field_tests.js b/addons/web/static/tests/views/fields/color_field_tests.js index 10aff4a9802..cca89bbedd5 100644 --- a/addons/web/static/tests/views/fields/color_field_tests.js +++ b/addons/web/static/tests/views/fields/color_field_tests.js @@ -48,7 +48,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(`onchange ${JSON.stringify(args.args)}`); } }, @@ -159,7 +159,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(`onchange ${JSON.stringify(args.args)}`); } }, diff --git a/addons/web/static/tests/views/fields/datetime_field_tests.js b/addons/web/static/tests/views/fields/datetime_field_tests.js index 7f20b12092b..ecfcaa61aa1 100644 --- a/addons/web/static/tests/views/fields/datetime_field_tests.js +++ b/addons/web/static/tests/views/fields/datetime_field_tests.js @@ -132,8 +132,8 @@ QUnit.module("Fields", (hooks) => { serverData, arch: '
', mockRPC(route, { method }) { - if (method === "onchange2") { - assert.step("onchange2"); + if (method === "onchange") { + assert.step("onchange"); } }, }); @@ -165,7 +165,7 @@ QUnit.module("Fields", (hooks) => { target.querySelector(".o_field_datetime input").value, "04/22/2018 08:25:00" ); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); } ); diff --git a/addons/web/static/tests/views/fields/email_field_tests.js b/addons/web/static/tests/views/fields/email_field_tests.js index d51b40c35b4..5e131e1c781 100644 --- a/addons/web/static/tests/views/fields/email_field_tests.js +++ b/addons/web/static/tests/views/fields/email_field_tests.js @@ -212,7 +212,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, { method }) { - if (method === "onchange2") { + if (method === "onchange") { return Promise.resolve({ value: { foo: "lara.espin@unknown", // onchange to update foo in readonly mode directly diff --git a/addons/web/static/tests/views/fields/many2many_checkboxes_field_tests.js b/addons/web/static/tests/views/fields/many2many_checkboxes_field_tests.js index 2b6113a785b..92d8fafb82a 100644 --- a/addons/web/static/tests/views/fields/many2many_checkboxes_field_tests.js +++ b/addons/web/static/tests/views/fields/many2many_checkboxes_field_tests.js @@ -501,7 +501,7 @@ QUnit.module("Fields", (hooks) => { // execute the setTimeout callback mockSetTimeout(); await nextTick(); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); }); QUnit.test("Many2ManyCheckBoxesField sends batched changes on save", async function (assert) { @@ -541,7 +541,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps(["get_views", "web_read", "name_search"]); // save await clickSave(target); - assert.verifySteps(["onchange2", "write", "web_read"]); + assert.verifySteps(["onchange", "write", "web_read"]); }); QUnit.test("Many2ManyCheckBoxesField in a notebook tab", async function (assert) { diff --git a/addons/web/static/tests/views/fields/many2many_field_tests.js b/addons/web/static/tests/views/fields/many2many_field_tests.js index 7fc5c678692..f781efe1b0c 100644 --- a/addons/web/static/tests/views/fields/many2many_field_tests.js +++ b/addons/web/static/tests/views/fields/many2many_field_tests.js @@ -666,7 +666,7 @@ QUnit.module("Fields", (hooks) => { "web_read", "get_views", "unity_web_search_read", - "onchange2", + "onchange", ]); modal = target.querySelector(".modal"); await editInput(modal, "[name='display_name'] input", "Hello"); @@ -725,7 +725,7 @@ QUnit.module("Fields", (hooks) => { "web_read", "get_views", "unity_web_search_read", - "onchange2", + "onchange", ]); modal = target.querySelector(".modal"); @@ -1614,7 +1614,7 @@ QUnit.module("Fields", (hooks) => { mockRPC(route, args) { const { method, kwargs } = args; assert.step(method); - if (method === "onchange2") { + if (method === "onchange") { assert.strictEqual(kwargs.context.default_turtle_trululu, 1); assert.deepEqual(args.args, [ [], @@ -1642,7 +1642,7 @@ QUnit.module("Fields", (hooks) => { target.querySelector("[name='turtle_trululu'] input").value, "first record" ); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); } ); @@ -1699,7 +1699,7 @@ QUnit.module("Fields", (hooks) => { await editInput(target, ".o_field_widget[name=foo] input", "trigger onchange"); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); assert.strictEqual( $(target).find(".o_x2m_control_panel .o_pager_counter").text().trim(), "1-40 / 45", @@ -1787,7 +1787,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { if (firstOnChange) { firstOnChange = false; return { @@ -2020,7 +2020,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual(args.kwargs.context.default_partner_id, 1); assert.strictEqual(args.kwargs.context.model, "partner"); assert.deepEqual(args.kwargs.context.ids, [1]); @@ -2077,7 +2077,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual(args.kwargs.context.default_partner_id, 1); assert.strictEqual(args.kwargs.context.model, "partner"); assert.deepEqual(args.kwargs.context.ids, [1]); @@ -2142,7 +2142,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual(args.kwargs.context.default_partner_id, 1); assert.strictEqual(args.kwargs.context.model, "partner"); assert.deepEqual(args.kwargs.context.ids, [1]); diff --git a/addons/web/static/tests/views/fields/many2many_tags_field_tests.js b/addons/web/static/tests/views/fields/many2many_tags_field_tests.js index 89347862c85..bcb913c074e 100644 --- a/addons/web/static/tests/views/fields/many2many_tags_field_tests.js +++ b/addons/web/static/tests/views/fields/many2many_tags_field_tests.js @@ -1355,7 +1355,7 @@ QUnit.module("Fields", (hooks) => { if (args.method === "name_search") { nameSearchProm.resolve(); } - if (args.method === "onchange2") { + if (args.method === "onchange") { if (onchangeCalls === 0) { assert.deepEqual( args.kwargs.context, @@ -1778,7 +1778,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", - "onchange2", + "onchange", ]); assert.containsNone(target, ".o_tag"); diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index 84ab854dc70..355327b792e 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -347,7 +347,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, { method, args }) { - if (method === "onchange2") { + if (method === "onchange") { const context = args[3].trululu.context; assert.strictEqual( context.blip, @@ -800,7 +800,7 @@ QUnit.module("Fields", (hooks) => { if (method === "get_formview_id") { return Promise.resolve(false); } - if (method === "onchange2") { + if (method === "onchange") { assert.strictEqual( args[1].user_id, 17, @@ -829,7 +829,7 @@ QUnit.module("Fields", (hooks) => { "web_read", "write", "read", - "onchange2", + "onchange", ]); } ); @@ -2742,7 +2742,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, { args, method }, performRPC) { assert.step(method); - if (method === "onchange2") { + if (method === "onchange") { const result = await performRPC(...arguments); result.value.trululu = { ...result.value.trululu, @@ -2758,7 +2758,7 @@ QUnit.module("Fields", (hooks) => { "hello world", "should have taken the correct display name" ); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); }); QUnit.test( @@ -3589,7 +3589,7 @@ QUnit.module("Fields", (hooks) => { "get_views", "unity_web_search_read", // to display results in the dialog "name_search", - "onchange2", + "onchange", "write", "web_read", ]); @@ -3639,7 +3639,7 @@ QUnit.module("Fields", (hooks) => { "get_views", "unity_web_search_read", // to display results in the dialog "name_search", - "onchange2", + "onchange", "write", "web_read", ]); @@ -3791,7 +3791,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", // main form view - "onchange2", + "onchange", "name_search", // to display results in the dropdown "get_views", // list view in dialog "unity_web_search_read", // to display results in the dialog @@ -3849,7 +3849,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", // main form view - "onchange2", + "onchange", "name_search", // empty search, triggered when the user clicks in the input "name_search", // to display results in the dropdown "name_search", // to get preselected ids matching the search @@ -4000,7 +4000,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", - "onchange2", + "onchange", "name_search", // to display results in the dropdown "get_views", // list view in dialog "unity_web_search_read", // to display results in the dialog diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 7652ea657b4..728bc831100 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -283,7 +283,7 @@ QUnit.module("Fields", (hooks) => { // of the lines of "p" await dragAndDrop("tbody tr:nth-child(2) .o_handle_cell", "tbody tr", "top"); - assert.verifySteps(["onchange2 partner"]); + assert.verifySteps(["onchange partner"]); } ); @@ -728,7 +728,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { await def; assert.step("onchange"); } @@ -1042,7 +1042,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step("onchange"); } }, @@ -1875,7 +1875,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[3], { // spec display_name: {}, @@ -2126,7 +2126,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2" && args.model === "partner") { + if (args.method === "onchange" && args.model === "partner") { assert.deepEqual(args.args[3], { display_name: {}, foo: {}, @@ -2398,7 +2398,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2" && args.model === "partner") { + if (args.method === "onchange" && args.model === "partner") { assert.deepEqual(args.args[3], { display_name: {}, foo: {}, @@ -3265,7 +3265,7 @@ QUnit.module("Fields", (hooks) => {
`, mockRPC(route, args) { - if (args.method === "onchange2" && args.model === "turtle") { + if (args.method === "onchange" && args.model === "turtle") { // done by the X2ManyFieldDialog assert.deepEqual(args.kwargs.context, { abc: 2, @@ -3357,7 +3357,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2" && args.model === "partner") { + if (args.method === "onchange" && args.model === "partner") { if (args.args[1].display_name === "test") { assert.deepEqual(args.args[3], { display_name: {}, @@ -4364,8 +4364,8 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", "web_read", - "onchange2", - "onchange2", + "onchange", + "onchange", "write", "web_read", ]); @@ -4692,7 +4692,7 @@ QUnit.module("Fields", (hooks) => { triggerHotkey("Enter"); await nextTick(); assert.hasClass(target.querySelector('div[name="turtle_foo"]'), "o_field_invalid"); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); }); QUnit.test("pressing enter several times in a one2many", async function (assert) { @@ -4826,8 +4826,8 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", "web_read", - "onchange2", - "onchange2", + "onchange", + "onchange", "write", "web_read", ]); @@ -4857,7 +4857,7 @@ QUnit.module("Fields", (hooks) => { await triggerEvent(target, '[name="turtle_foo"] input', "keydown", { key: "Escape" }); assert.containsNone(target, "tr.o_data_row"); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); }); QUnit.test( @@ -4889,7 +4889,7 @@ QUnit.module("Fields", (hooks) => { await triggerEvent(target, '[name="turtle_foo"] input', "keydown", { key: "Escape" }); assert.containsNone(target, "tr.o_data_row"); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); } ); @@ -4963,7 +4963,7 @@ QUnit.module("Fields", (hooks) => { await editInput(target, ".o_field_widget[name=product_id] input", ""); assert.verifySteps([], "no onchange should be done as line is invalid"); await click(target.querySelector(".o_list_record_remove")); - assert.verifySteps(["onchange2"], "onchange should have been done"); + assert.verifySteps(["onchange"], "onchange should have been done"); } ); @@ -4989,7 +4989,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: { p: [ @@ -5033,7 +5033,7 @@ QUnit.module("Fields", (hooks) => {
`, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return { value: { p: [ @@ -5098,7 +5098,7 @@ QUnit.module("Fields", (hooks) => { assert.strictEqual(td.textContent, "9"); await click(td); await editInput(target, 'td [name="turtle_int"] input', "3"); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); }); QUnit.test("one2many and onchange (with date)", async function (assert) { @@ -5132,7 +5132,7 @@ QUnit.module("Fields", (hooks) => { await click(getPickerCell("1").at(0)); await clickSave(target); - assert.verifySteps(["get_views", "web_read", "onchange2", "write", "web_read"]); + assert.verifySteps(["get_views", "web_read", "onchange", "write", "web_read"]); }); QUnit.test("one2many and onchange only write modified field", async function (assert) { @@ -5459,7 +5459,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2" && checkOnchange) { + if (args.method === "onchange" && checkOnchange) { assert.deepEqual( args.args[1].p, [[0, args.args[1].p[0][1], { product_id: 41 }]], @@ -5750,7 +5750,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual( args.kwargs.context.date, "2017-01-25", @@ -5782,7 +5782,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual( args.kwargs.context.turtles, [2], @@ -5857,7 +5857,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { var context = args.kwargs.context; assert.strictEqual(context.hello, "world"); assert.strictEqual(context.abc, 10); @@ -6121,7 +6121,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { n++; if (n === 2) { var context = args.kwargs.context; @@ -6154,7 +6154,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { const fieldValues = args.args[1]; assert.deepEqual( fieldValues.trululu, @@ -6200,7 +6200,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { const fieldValues = args.args[1]; if (count === 1) { assert.deepEqual(fieldValues.trululu, { @@ -6254,7 +6254,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2" && args.model === "turtle") { + if (args.method === "onchange" && args.model === "turtle") { var fieldValues = args.args[1]; assert.strictEqual( fieldValues.turtle_trululu.foo, @@ -6265,7 +6265,7 @@ QUnit.module("Fields", (hooks) => { }, }); await addRow(target); - assert.verifySteps(["get_views", "onchange2", "onchange2"]); + assert.verifySteps(["get_views", "onchange", "onchange"]); } ); @@ -6606,8 +6606,8 @@ QUnit.module("Fields", (hooks) => { "get_views", // main form view "web_read", // initial read on partner "web_read", // after first delete, read on turtle (to fetch 3rd record) - "onchange2", // after first delete, onchange on field turtles - "onchange2", // onchange after second delete + "onchange", // after first delete, onchange on field turtles + "onchange", // onchange after second delete ]); } ); @@ -7048,7 +7048,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[3], { bar: {}, display_name: {}, @@ -7758,10 +7758,10 @@ QUnit.module("Fields", (hooks) => { target.querySelector('.o_field_widget[name="int_field"] input').value, "0" ); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); await editInput(target, '.o_field_widget[name="turtle_foo"] input', "some text"); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); assert.strictEqual( target.querySelector('.o_field_widget[name="int_field"] input').value, "1" @@ -7830,7 +7830,7 @@ QUnit.module("Fields", (hooks) => { "0", "int_field should still be 0 (no onchange should have been done yet)" ); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); // fill turtle_foo field await editInput(target, '.o_field_widget[name="turtle_foo"] input', "some text"); @@ -7849,7 +7849,7 @@ QUnit.module("Fields", (hooks) => { "1", "int_field should now be 1 (the onchange should have been done" ); - assert.verifySteps(["name_search", "web_read", "onchange2"]); + assert.verifySteps(["name_search", "web_read", "onchange"]); } ); @@ -7972,7 +7972,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { await Promise.resolve(def); } }, @@ -8022,7 +8022,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { await Promise.resolve(def); } }, @@ -8119,7 +8119,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(args.method); return { value: {}, @@ -8143,7 +8143,7 @@ QUnit.module("Fields", (hooks) => { // and a warning again) await addRow(target); - assert.verifySteps(["onchange2", "warning", "onchange2", "warning"]); + assert.verifySteps(["onchange", "warning", "onchange", "warning"]); }); QUnit.test("editable list: contexts are correctly sent", async function (assert) { @@ -8222,7 +8222,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual( args.kwargs.context, { @@ -8287,7 +8287,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { onchangeNb++; if (onchangeNb === 1) { assert.deepEqual(args.args[3].p.context, { parent_foo: "yop" }); @@ -8325,7 +8325,7 @@ QUnit.module("Fields", (hooks) => { }, }); await editInput(target, '[name="foo"] input', "abcd"); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); }); QUnit.test( @@ -8356,7 +8356,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[3], { display_name: {}, name: {}, @@ -8485,7 +8485,7 @@ QUnit.module("Fields", (hooks) => { // triggers an onchange on partner, because the new record is valid await addRow(target); - assert.verifySteps(["get_views", "web_read", "onchange2", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange", "onchange"]); }); QUnit.test("onchange on a one2many containing a one2many", async function (assert) { @@ -8518,7 +8518,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2" && checkOnchange) { + if (args.method === "onchange" && checkOnchange) { assert.deepEqual(args.args[3], { display_name: {}, p: { @@ -8592,7 +8592,7 @@ QUnit.module("Fields", (hooks) => { await clickSave(target); assert.containsN(target, "tr.o_data_row", 40); - assert.verifySteps(["get_views", "web_read", "onchange2", "write", "web_read"]); + assert.verifySteps(["get_views", "web_read", "onchange", "write", "web_read"]); }); QUnit.test("editing tabbed one2many (editable=bottom), again...", async function (assert) { @@ -8671,7 +8671,7 @@ QUnit.module("Fields", (hooks) => { await clickSave(target); assert.containsN(target, "tr.o_data_row", 40); - assert.verifySteps(["get_views", "web_read", "web_read", "onchange2", "write", "web_read"]); + assert.verifySteps(["get_views", "web_read", "web_read", "onchange", "write", "web_read"]); }); QUnit.test( @@ -8987,7 +8987,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { if (args.args[1].turtles[0][2].turtle_foo === "pinky") { throw makeServerError({ type: "ValidationError" }); } @@ -9044,7 +9044,7 @@ QUnit.module("Fields", (hooks) => { "shy", "view context key should be used for every rpcs" ); - if (args.method === "onchange2") { + if (args.method === "onchange") { if (args.model === "partner") { assert.strictEqual( args.kwargs.context.default_flutter, @@ -9212,7 +9212,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return { value: { turtles: [ @@ -9258,7 +9258,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return { value: { turtles: [ @@ -9614,7 +9614,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", "web_read [1]", // main record - "onchange2", + "onchange", // this test's purpose is to assert that this rpc isn't // done, but yet it is. Actually, it wasn't before because mockOnChange // returned [1] as command list, instead of [[6, false, [1]]], so basically @@ -9732,7 +9732,7 @@ QUnit.module("Fields", (hooks) => { // swap 2 lines in the one2many await dragAndDrop("tbody tr:nth-child(2) .o_handle_cell", "tbody tr", "top"); - assert.verifySteps(["get_views", "get_views", "web_read", "onchange2", "onchange2"]); + assert.verifySteps(["get_views", "get_views", "web_read", "onchange", "onchange"]); } ); @@ -9779,9 +9779,9 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views", // load main form "get_views", // load sub list - "onchange2", // main record - "onchange2", // sub record - "onchange2", // edition of display_name of sub record + "onchange", // main record + "onchange", // sub record + "onchange", // edition of display_name of sub record ]); } ); @@ -10425,7 +10425,7 @@ QUnit.module("Fields", (hooks) => { resId: 1, mockRPC(route, args) { const { method, kwargs } = args; - if (method === "onchange2") { + if (method === "onchange") { assert.step("onchange"); assert.strictEqual(kwargs.context.default_turtle_foo, "soft"); } @@ -10461,20 +10461,20 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { await Promise.resolve(def); } }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); const value = "hello"; // add a new line await addRow(target); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // we want to add a delay to simulate an onchange def = makeDeferred(); @@ -10490,7 +10490,7 @@ QUnit.module("Fields", (hooks) => { assert.strictEqual(target.querySelector("[name=turtle_foo] input").value, value); assert.containsOnce(target, ".o_data_row"); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // unlock onchange def.resolve(); @@ -10507,7 +10507,7 @@ QUnit.module("Fields", (hooks) => { "" ); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); }); QUnit.test("edit a field with a slow onchange in one2many", async function (assert) { @@ -10530,20 +10530,20 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { await Promise.resolve(def); } }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); const value = "hello"; // add a new line await addRow(target); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // we want to add a delay to simulate an onchange def = makeDeferred(); @@ -10557,7 +10557,7 @@ QUnit.module("Fields", (hooks) => { // check that nothing changed before the onchange finished assert.strictEqual(target.querySelector("[name=turtle_foo] input").value, value); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // unlock onchange def.resolve(); @@ -10606,9 +10606,9 @@ QUnit.module("Fields", (hooks) => { ); assert.verifySteps([ "get_views", // main form view - "onchange2", // main record - "onchange2", // line 1 - "onchange2", // line 2 + "onchange", // main record + "onchange", // line 1 + "onchange", // line 2 "create", "web_read", // main record ]); @@ -10922,7 +10922,7 @@ QUnit.module("Fields", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step("onchange"); } }, @@ -11007,7 +11007,7 @@ QUnit.module("Fields", (hooks) => { ["second record", "second recordaaa"] ); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); } ); @@ -11495,7 +11495,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { - if (step === 3 && args.method === "onchange2" && args.model === "partner") { + if (step === 3 && args.method === "onchange" && args.model === "partner") { assert.deepEqual(args.args[1].turtles[0][2], { o2m: [], turtle_bar: false, @@ -11649,7 +11649,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { if (args.model === "turtle") { assert.deepEqual( args.kwargs.context, @@ -11701,7 +11701,7 @@ QUnit.module("Fields", (hooks) => { target.querySelector(".o_field_widget[name=product_id] input").value, "xphone" ); - assert.verifySteps(["get_views on partner", "onchange2 on partner"]); + assert.verifySteps(["get_views on partner", "onchange on partner"]); }); QUnit.test("x2many default_order multiple fields", async function (assert) { @@ -11930,11 +11930,11 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps([ "get_views partner", "web_read partner", - "onchange2 turtle", - "onchange2 partner", - "onchange2 partner", - "onchange2 turtle", - "onchange2 partner", + "onchange turtle", + "onchange partner", + "onchange partner", + "onchange turtle", + "onchange partner", ]); }); @@ -13096,7 +13096,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps(["get_views partner", "web_read partner"]); await click(target, ".o_boolean_toggle"); - assert.verifySteps(["onchange2 partner", "write turtle", "web_read turtle"]); + assert.verifySteps(["onchange partner", "write turtle", "web_read turtle"]); }); QUnit.test("create a new record with an x2m invisible", async function (assert) { @@ -13115,7 +13115,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[3], { display_name: {}, p: { @@ -13160,7 +13160,7 @@ QUnit.module("Fields", (hooks) => { }); assert.containsNone(target, "[name='p']"); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await click(target, ".o_form_button_save"); assert.verifySteps(["create", "web_read"]); @@ -13684,15 +13684,15 @@ QUnit.module("Fields", (hooks) => { }, }); - assert.verifySteps(["get_views: partner", "onchange2: partner"]); + assert.verifySteps(["get_views: partner", "onchange: partner"]); await click(target, ".o_field_x2many_list_row_add a"); - assert.verifySteps(["get_views: partner_type", "onchange2: partner_type"]); + assert.verifySteps(["get_views: partner_type", "onchange: partner_type"]); await editInput( target.querySelector(".modal"), ".o_field_widget[name='display_name'] input", "changed" ); - assert.verifySteps(["onchange2: partner_type"]); + assert.verifySteps(["onchange: partner_type"]); await click(target.querySelector(".modal .o_form_button_save")); assert.strictEqual(target.querySelector(".o_data_row").textContent, "changed5"); await click(target, ".o_form_button_save"); @@ -13844,7 +13844,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { if ( - args.method === "onchange2" && + args.method === "onchange" && args.args[2].length === 1 && args.args[2][0] === "display_name" ) { @@ -13894,7 +13894,7 @@ QUnit.module("Fields", (hooks) => { `, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return { value: { p: [ diff --git a/addons/web/static/tests/views/fields/reference_field_tests.js b/addons/web/static/tests/views/fields/reference_field_tests.js index c4ed403bfd5..84088e15258 100644 --- a/addons/web/static/tests/views/fields/reference_field_tests.js +++ b/addons/web/static/tests/views/fields/reference_field_tests.js @@ -248,7 +248,7 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps( [ "get_views", - "onchange2", + "onchange", "name_search", // for the select "name_search", // for the spawned many2one "name_create", @@ -861,7 +861,7 @@ QUnit.module("Fields", (hooks) => { `, mockRPC: (route, { method, args }) => { - if (method === "onchange2") { + if (method === "onchange") { return { value: { reference: { diff --git a/addons/web/static/tests/views/fields/selection_field_tests.js b/addons/web/static/tests/views/fields/selection_field_tests.js index bd553f66b09..2acf544ac04 100644 --- a/addons/web/static/tests/views/fields/selection_field_tests.js +++ b/addons/web/static/tests/views/fields/selection_field_tests.js @@ -147,7 +147,7 @@ QUnit.module("Fields", (hooks) => { "should have correct value in color field" ); - assert.verifySteps(["get_views", "web_read", "name_search", "name_search", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "name_search", "name_search", "onchange"]); }); QUnit.test("unset selection field with 0 as key", async function (assert) { diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index 87e5fb5c3f1..2c75e06ad8c 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -1068,7 +1068,7 @@ QUnit.module("Views", (hooks) => { `, resId: 2, mockRPC: (route, { method, model, kwargs }) => { - if (["get_views", "onchange2"].includes(method)) { + if (["get_views", "onchange"].includes(method)) { const { context } = kwargs; assert.step(`${method} (${model})`); assert.deepEqual(context, expectedContexts.get(model)); @@ -1089,7 +1089,7 @@ QUnit.module("Views", (hooks) => { // Create a new timmy await click(target, ".modal .o_create_button"); - assert.verifySteps(["get_views (partner_type)", "onchange2 (partner_type)"]); + assert.verifySteps(["get_views (partner_type)", "onchange (partner_type)"]); // Create a new company expectedContexts.clear(); @@ -1099,7 +1099,7 @@ QUnit.module("Views", (hooks) => { form_view_ref: "bar_rescompany_form_view", }); await click(target, ".modal [name=company_ids] .o_field_x2many_list_row_add a"); - assert.verifySteps(["get_views (res.company)", "onchange2 (res.company)"]); + assert.verifySteps(["get_views (res.company)", "onchange (res.company)"]); }); QUnit.test("invisible fields are properly hidden", async function (assert) { @@ -2404,7 +2404,7 @@ QUnit.module("Views", (hooks) => { assert.containsN(target, ".o_form_label.o_field_invalid", 2); assert.containsN(target, ".o_field_widget.o_field_invalid", 2); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); }); QUnit.test("twice same field with different readonly attributes", async function (assert) { @@ -2491,7 +2491,7 @@ QUnit.module("Views", (hooks) => { await clickSave(target); assert.hasClass(target.querySelector(".o_field_widget[name=foo]"), "o_field_invalid"); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); }); QUnit.test("required field computed by another field in a form view", async function (assert) { @@ -3037,7 +3037,7 @@ QUnit.module("Views", (hooks) => { "qux input is properly formatted" ); - assert.verifySteps(["get_views", "onchange2", "create", "web_read", "write", "web_read"]); + assert.verifySteps(["get_views", "onchange", "create", "web_read", "write", "web_read"]); }); QUnit.test("separators", async function (assert) { @@ -3117,7 +3117,7 @@ QUnit.module("Views", (hooks) => { }, }; const mockRPC = function (route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[3], { foo: {} }); } }; @@ -3478,7 +3478,7 @@ QUnit.module("Views", (hooks) => { }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await click(target.querySelector(".o_form_statusbar button.p")); @@ -3535,7 +3535,7 @@ QUnit.module("Views", (hooks) => { assert.verifySteps([ "get_views", - "onchange2", + "onchange", "create", "web_read", "execute_action", @@ -3743,7 +3743,7 @@ QUnit.module("Views", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual( args.args[3], { @@ -3801,7 +3801,7 @@ QUnit.module("Views", (hooks) => { `, resId: 1, mockRPC(route, args) { - if (args.method === "onchange2" && checkOnchange) { + if (args.method === "onchange" && checkOnchange) { assert.deepEqual( args.args[1], { @@ -3921,7 +3921,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual( args.args[3], { @@ -3939,7 +3939,7 @@ QUnit.module("Views", (hooks) => { } }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); } ); @@ -3962,14 +3962,14 @@ QUnit.module("Views", (hooks) => { `, mockRPC: function (route, args) { - if (route === "/web/dataset/call_kw/partner/onchange2") { + if (route === "/web/dataset/call_kw/partner/onchange") { assert.deepEqual(args.kwargs.context, { default_state: "ab", lang: "en", tz: "taht", uid: 7, }); - } else if (route === "/web/dataset/call_kw/product/onchange2") { + } else if (route === "/web/dataset/call_kw/product/onchange") { assert.deepEqual(args.kwargs.context, { default_product_uom_qty: 68, lang: "en", @@ -4013,7 +4013,7 @@ QUnit.module("Views", (hooks) => { }, }); } - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.kwargs.context, { dynamic: 20, lang: "en", @@ -4113,7 +4113,7 @@ QUnit.module("Views", (hooks) => { }); assert.strictEqual(target.querySelector("input").value, "default foo value"); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); }); QUnit.test("make default record with non empty one2many", async function (assert) { @@ -4433,7 +4433,7 @@ QUnit.module("Views", (hooks) => { assert.containsOnce(document.body, ".modal"); assert.verifySteps([]); await click(document.body.querySelector(".modal-footer .btn-primary")); - assert.verifySteps(["action_archive: partner", "get_views: product", "onchange2: product"]); + assert.verifySteps(["action_archive: partner", "get_views: product", "onchange: product"]); await click(target, ".modal footer .myButton"); assert.verifySteps([ "create: product", @@ -6141,7 +6141,7 @@ QUnit.module("Views", (hooks) => { arch: `
`, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: { int_field: 10 }, warning: { @@ -6185,7 +6185,7 @@ QUnit.module("Views", (hooks) => { arch: `
`, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: { int_field: 10 }, warning: { @@ -6234,7 +6234,7 @@ QUnit.module("Views", (hooks) => { serverData, arch: `
`, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: { int_field: 10 }, warning: { @@ -6372,7 +6372,7 @@ QUnit.module("Views", (hooks) => { `, resId: 1, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { await def; } }, @@ -6531,7 +6531,7 @@ QUnit.module("Views", (hooks) => { await clickSave(target); - assert.verifySteps(["get_views", "web_read", "onchange2", "write", "web_read"]); + assert.verifySteps(["get_views", "web_read", "onchange", "write", "web_read"]); }); QUnit.test( @@ -6625,7 +6625,7 @@ QUnit.module("Views", (hooks) => { "should read display_name when opening the subrecord" ); } - if (args.method === "onchange2" && args.model === "partner") { + if (args.method === "onchange" && args.model === "partner") { assert.deepEqual( args.args[1], { @@ -6646,7 +6646,7 @@ QUnit.module("Views", (hooks) => { }, }); } - if (args.method === "onchange2" && args.model === "partner_type") { + if (args.method === "onchange" && args.model === "partner_type") { assert.deepEqual( args.args[1], { @@ -6761,7 +6761,7 @@ QUnit.module("Views", (hooks) => { "input int_field is marked as invalid" ); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); }); QUnit.test("rpc complete after destroying parent", async function (assert) { @@ -6831,7 +6831,7 @@ QUnit.module("Views", (hooks) => { arch: `
`, resId: 2, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step("onchange is done"); await def; } @@ -6944,7 +6944,7 @@ QUnit.module("Views", (hooks) => { `, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.args[1], { foo: "trigger an onchange" }); } }, @@ -6980,7 +6980,7 @@ QUnit.module("Views", (hooks) => { `, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: { p: [[1, 4, { foo: "foo changed" }]], @@ -7173,7 +7173,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual( args.kwargs.context.test, 1, @@ -7719,7 +7719,7 @@ QUnit.module("Views", (hooks) => { [0, commands[0][1], { foo: "some value", qux: 6.5 }], ]); } - if (args.method === "onchange2") { + if (args.method === "onchange") { return { value: { p: [[0, false, { foo: "some value", int_field: 44, qux: 6.5 }]], @@ -7771,7 +7771,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2" && checkOnchange) { + if (args.method === "onchange" && checkOnchange) { assert.strictEqual( args.kwargs.context.current_id, false, @@ -7879,7 +7879,7 @@ QUnit.module("Views", (hooks) => { arch: `
`, resId: 2, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ warning: { title: "Warning", @@ -8327,7 +8327,7 @@ QUnit.module("Views", (hooks) => { resId: 2, async mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { await def; } }, @@ -8339,7 +8339,7 @@ QUnit.module("Views", (hooks) => { def.resolve(); await nextTick(); - assert.verifySteps(["get_views", "web_read", "onchange2", "danger"]); + assert.verifySteps(["get_views", "web_read", "onchange", "danger"]); }); QUnit.test("display toolbar", async function (assert) { @@ -8484,7 +8484,7 @@ QUnit.module("Views", (hooks) => { assert.verifySteps([ "get_views", - "onchange2", + "onchange", "create", "web_read", `{"action_id":29,"context":{"lang":"en","uid":7,"tz":"taht","active_id":6,"active_ids":[6],"active_model":"partner","active_domain":[]}}`, @@ -8699,7 +8699,7 @@ QUnit.module("Views", (hooks) => { assert.step(args.method); }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); } ); @@ -9358,7 +9358,7 @@ QUnit.module("Views", (hooks) => { }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); assert.containsOnce(target, ".o_form_editable"); await click(target, ".o_field_translate.btn-link"); assert.verifySteps(["create", "web_read", "get_installed", "get_field_translations"]); @@ -9683,7 +9683,7 @@ QUnit.module("Views", (hooks) => { "button should no longer be disabled" ); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); // click on button, and click on ok in confirm dialog await click(target.querySelector(".o_statusbar_buttons button")); @@ -9727,7 +9727,7 @@ QUnit.module("Views", (hooks) => { "confirmation dialog should have correct confirmation label" ); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); } ); @@ -9758,7 +9758,7 @@ QUnit.module("Views", (hooks) => { }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await click(target.querySelector(".o_statusbar_buttons button")); assert.verifySteps([]); @@ -10040,7 +10040,7 @@ QUnit.module("Views", (hooks) => {
`, mockRPC(route, args) { - if (checkOnchange && args.method === "onchange2") { + if (checkOnchange && args.method === "onchange") { if (args.args[2][0] === "display_name") { // onchange on field display_name assert.strictEqual( @@ -10875,7 +10875,7 @@ QUnit.module("Views", (hooks) => { "some foo value", "foo field should have correct value" ); - assert.verifySteps(["get_views", "onchange2", "create", "web_read"]); + assert.verifySteps(["get_views", "onchange", "create", "web_read"]); }); QUnit.test("saving with invalid uncommitted changes", async function (assert) { @@ -10903,7 +10903,7 @@ QUnit.module("Views", (hooks) => { assert.hasClass(target.querySelector("[name=qux]"), "o_field_invalid"); assert.containsOnce(target, ".o_notification .text-danger"); assert.containsOnce(target, ".o_form_editable .o_field_invalid[name=qux]"); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); }); QUnit.test( @@ -10937,7 +10937,7 @@ QUnit.module("Views", (hooks) => {
`, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { await onchangeDef; } if (args.method === "create") { @@ -11014,7 +11014,7 @@ QUnit.module("Views", (hooks) => { const createDef = makeDeferred(); const mockRPC = async (route, args) => { - if (args.method === "onchange2") { + if (args.method === "onchange") { await onchangeDef; } if (args.method === "create") { @@ -11532,7 +11532,7 @@ QUnit.module("Views", (hooks) => { await editInput(target, '.o_field_widget[name="name"] input', "Test Company"); await clickSave(target); - assert.verifySteps(["get_views", "onchange2", "create", "reload company", "web_read"]); + assert.verifySteps(["get_views", "onchange", "create", "reload company", "web_read"]); } ); @@ -12178,7 +12178,7 @@ QUnit.module("Views", (hooks) => { `, resId: 1, mockRPC(route, { args, method, model }) { - if (method === "onchange2" && model === "partner") { + if (method === "onchange" && model === "partner") { return def; } if (method === "write" && model === "partner") { @@ -12214,7 +12214,7 @@ QUnit.module("Views", (hooks) => { `, resId: 1, mockRPC(route, { args, method }) { - if (method === "onchange2") { + if (method === "onchange") { return def; } if (method === "write") { @@ -12284,7 +12284,7 @@ QUnit.module("Views", (hooks) => { resId: 1, mockRPC(route, { args, method }) { assert.step(method); - if (method === "onchange2") { + if (method === "onchange") { return def; } if (method === "write") { @@ -12312,7 +12312,7 @@ QUnit.module("Views", (hooks) => { window.dispatchEvent(new Event("beforeunload")); await nextTick(); - assert.verifySteps(["get_views", "web_read", "onchange2", "write"]); + assert.verifySteps(["get_views", "web_read", "onchange", "write"]); } ); @@ -12372,7 +12372,7 @@ QUnit.module("Views", (hooks) => { resId: 1, mockRPC(route, { method }) { assert.step(method); - if (method === "onchange2") { + if (method === "onchange") { return def; } }, @@ -12384,7 +12384,7 @@ QUnit.module("Views", (hooks) => { window.dispatchEvent(new Event("beforeunload")); await nextTick(); - assert.verifySteps(["get_views", "web_read", "onchange2"]); + assert.verifySteps(["get_views", "web_read", "onchange"]); } ); @@ -12840,7 +12840,7 @@ QUnit.module("Views", (hooks) => { }); await clickSave(target); - assert.verifySteps(["get_views", "onchange2", "create", "web_read"]); + assert.verifySteps(["get_views", "onchange", "create", "web_read"]); }); QUnit.test( @@ -12906,7 +12906,7 @@ QUnit.module("Views", (hooks) => { target.querySelector(".o_list_renderer .o_data_row [name='int_field']").textContent, "1" ); - assert.verifySteps(["get_views", "onchange2", "onchange2", "create", "web_read"]); + assert.verifySteps(["get_views", "onchange", "onchange", "create", "web_read"]); } ); @@ -13783,7 +13783,7 @@ QUnit.module("Views", (hooks) => { `, resId: 2, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.strictEqual(args.args[1].name, "New Name"); assert.strictEqual(args.args[1].p.length, 1); assert.deepEqual(args.args[1].p[0][2], { name: "yop" }); diff --git a/addons/web/static/tests/views/kanban/kanban_view_tests.js b/addons/web/static/tests/views/kanban/kanban_view_tests.js index 80e03bb276b..9b6bec489b6 100644 --- a/addons/web/static/tests/views/kanban/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban/kanban_view_tests.js @@ -1872,10 +1872,10 @@ QUnit.module("Views", (hooks) => { "web_read_group", // initial read_group "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) - "onchange2", // quick create + "onchange", // quick create "name_create", // should perform a name_create to create the record "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -1951,11 +1951,11 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "get_views", // form view in quick create - "onchange2", // quick create + "onchange", // quick create "create", // should perform a create to create the record "web_read", "web_read", // read the created record - "onchange2", // new quick create + "onchange", // new quick create ]); }); @@ -1998,7 +1998,7 @@ QUnit.module("Views", (hooks) => { "should send the correct values" ); } - if (args.method === "onchange2") { + if (args.method === "onchange") { await def; } }, @@ -2225,10 +2225,10 @@ QUnit.module("Views", (hooks) => { "web_read_group", // initial read_group "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) - "onchange2", // quick create + "onchange", // quick create "name_create", // should perform a name_create to create the record "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -2295,11 +2295,11 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "get_views", // form view in quick create - "onchange2", // quick create + "onchange", // quick create "create", // should perform a create to create the record "web_read", "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -2351,10 +2351,10 @@ QUnit.module("Views", (hooks) => { "web_read_group", // initial read_group "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) - "onchange2", // quick create + "onchange", // quick create "name_create", // should perform a name_create to create the record "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -2409,10 +2409,10 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "unity_web_search_read", // read records when unfolding 'None' - "onchange2", // quick create + "onchange", // quick create "name_create", // should perform a name_create to create the record "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -2477,10 +2477,10 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "get_views", // get form view - "onchange2", // quick create + "onchange", // quick create "create", // should perform a create to create the record "web_read", // read the created record - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); @@ -2551,10 +2551,10 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "get_views", // get form view - "onchange2", // quick create + "onchange", // quick create "create", // should perform a create to create the record "web_read", - "onchange2", + "onchange", ]); }); @@ -2584,7 +2584,7 @@ QUnit.module("Views", (hooks) => { ]); await createRecord(); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // do not fill anything and validate await validateRecord(); @@ -2654,8 +2654,8 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) "get_views", // form view in quick create - "onchange2", // quick create - "onchange2", // onchange due to 'foo' field change + "onchange", // quick create + "onchange", // onchange due to 'foo' field change ]); }); @@ -2748,13 +2748,13 @@ QUnit.module("Views", (hooks) => { // click on 'Create' -> should open the quick create in the first column await quickCreateRecord(); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); // fill the 'foo' field -> should trigger the onchange await editQuickCreateInput("foo", "new partner"); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); await validateRecord(); - assert.verifySteps(["create", "web_read", "onchange2"]); + assert.verifySteps(["create", "web_read", "onchange"]); }); QUnit.test("quick create record and change state in grouped mode", async (assert) => { @@ -3198,7 +3198,7 @@ QUnit.module("Views", (hooks) => { groupBy: ["bar"], async mockRPC(route, { method, args }) { switch (method) { - case "onchange2": { + case "onchange": { assert.step(method); if (shouldDelayOnchange) { await prom; @@ -3271,10 +3271,10 @@ QUnit.module("Views", (hooks) => { ); assert.verifySteps([ - "onchange2", // default_get - "onchange2", // new partner + "onchange", // default_get + "onchange", // new partner "create", - "onchange2", // default_get + "onchange", // default_get ]); } ); @@ -3306,8 +3306,8 @@ QUnit.module("Views", (hooks) => { "", groupBy: ["bar"], async mockRPC(route, args) { - if (args.method === "onchange2") { - assert.step("onchange2"); + if (args.method === "onchange") { + assert.step("onchange"); if (shouldDelayOnchange) { await prom; } @@ -3370,10 +3370,10 @@ QUnit.module("Views", (hooks) => { ); assert.verifySteps([ - "onchange2", // default_get - "onchange2", // new partner + "onchange", // default_get + "onchange", // new partner "create", - "onchange2", // default_get + "onchange", // default_get ]); } ); @@ -6872,12 +6872,12 @@ QUnit.module("Views", (hooks) => { "get_views", "web_read_group", "read_progress_bar", - "onchange2", + "onchange", "name_create", "web_read", "read_progress_bar", "web_read_group", - "onchange2", + "onchange", ]); } ); @@ -9578,11 +9578,11 @@ QUnit.module("Views", (hooks) => { "read_progress_bar", "unity_web_search_read", "unity_web_search_read", - "onchange2", + "onchange", "name_create", "web_read", "read_progress_bar", - "onchange2", + "onchange", ]); }); @@ -10293,12 +10293,12 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", "unity_web_search_read", "get_views", - "onchange2", + "onchange", "create", "web_read", "read_progress_bar", "web_read_group", - "onchange2", + "onchange", ]); } ); @@ -10368,19 +10368,19 @@ QUnit.module("Views", (hooks) => { "web_read_group", "unity_web_search_read", "get_views", - "onchange2", + "onchange", "create", "web_read", "read_progress_bar", "web_read_group", "web_read_group", - "onchange2", + "onchange", "create", "web_read", "read_progress_bar", "web_read_group", "web_read_group", - "onchange2", + "onchange", ]); } ); @@ -13187,13 +13187,13 @@ QUnit.module("Views", (hooks) => { "web_read_group", // initial read_group "unity_web_search_read", // initial search_read (first column) "unity_web_search_read", // initial search_read (second column) - "onchange2", // quick create + "onchange", // quick create "name_create", // should perform a name_create to create the record "get_views", // load views for form view dialog - "onchange2", // load of a virtual record in form view dialog + "onchange", // load of a virtual record in form view dialog "create", // save virtual record "web_read", // read the created record to get foo value - "onchange2", // reopen the quick create automatically + "onchange", // reopen the quick create automatically ]); }); diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 5083a152315..2b4be641881 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -1588,7 +1588,7 @@ QUnit.module("Views", (hooks) => { await click(target, ".o_list_view"); assert.containsN(target, ".o_data_row", 5); assert.strictEqual(target.querySelector(".o_data_row [name='int_field']").textContent, "1"); - assert.verifySteps(["onchange2", "create", "web_read"]); + assert.verifySteps(["onchange", "create", "web_read"]); }); QUnit.test("multi_edit: edit a required field with an invalid value", async function (assert) { @@ -1795,7 +1795,7 @@ QUnit.module("Views", (hooks) => { await click($(".o_list_button_add:visible").get(0)); assert.verifySteps( - ["get_views", "unity_web_search_read", "onchange2"], + ["get_views", "unity_web_search_read", "onchange"], "no nameget should be done" ); } @@ -2322,7 +2322,7 @@ QUnit.module("Views", (hooks) => { `, groupBy: ["m2m"], mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual(args.kwargs.context.default_m2m, [1]); } }, @@ -8233,7 +8233,7 @@ QUnit.module("Views", (hooks) => { `, groupBy: ["currency_id"], mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.deepEqual( args.args[3], { @@ -9377,7 +9377,7 @@ QUnit.module("Views", (hooks) => { assert.containsN(target, "tr.o_data_row", 5); assert.hasClass(target.querySelector("tr.o_data_row:nth-child(5)"), "o_selected_row"); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); }); QUnit.test("pressing tab on last cell of editable list view", async function (assert) { @@ -9426,7 +9426,7 @@ QUnit.module("Views", (hooks) => { "/web/dataset/call_kw/foo/unity_web_search_read", "/web/dataset/call_kw/foo/write", "/web/dataset/call_kw/foo/web_read", - "/web/dataset/call_kw/foo/onchange2", + "/web/dataset/call_kw/foo/onchange", ]); }); @@ -9447,7 +9447,7 @@ QUnit.module("Views", (hooks) => { return result; }); } - if (args.method === "onchange2") { + if (args.method === "onchange") { return onchangeGetPromise.then(function () { return result; }); @@ -9491,7 +9491,7 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", "write", "web_read", - "onchange2", + "onchange", ]); }); @@ -10143,7 +10143,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(`onchange:${args.model}`); } }, @@ -11087,7 +11087,7 @@ QUnit.module("Views", (hooks) => { arch: '', mockRPC: async function (route, args, performRPC) { const result = await performRPC(route, args); - if (args.method === "onchange2") { + if (args.method === "onchange") { await prom; } return result; @@ -11636,7 +11636,7 @@ QUnit.module("Views", (hooks) => { // create a record and edit its value await click($(".o_list_button_add:visible").get(0)); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); await editInput(target, ".o_selected_row [name=int_field] input", 123); assert.containsNone(document.body, ".modal"); @@ -14303,10 +14303,10 @@ QUnit.module("Views", (hooks) => { "unity_web_search_read", "write", "web_read", - "onchange2", + "onchange", "create", "web_read", - "onchange2", + "onchange", ]); }); @@ -14397,7 +14397,7 @@ QUnit.module("Views", (hooks) => { "web_read_group", "unity_web_search_read", "unity_web_search_read", - "onchange2", + "onchange", ]); }); @@ -15753,7 +15753,7 @@ QUnit.module("Views", (hooks) => { `, groupBy: ["priority"], mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(args.kwargs.context.default_priority.toString()); } }, @@ -15793,7 +15793,7 @@ QUnit.module("Views", (hooks) => { `, groupBy: ["m2o"], mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(args.kwargs.context.default_m2o.toString()); } }, @@ -17229,7 +17229,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, { args, method, model }) { - if (model === "foo" && method === "onchange2") { + if (model === "foo" && method === "onchange") { return def; } if (model === "foo" && method === "write") { @@ -17265,7 +17265,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, { args, method, model }) { - if (model === "foo" && method === "onchange2") { + if (model === "foo" && method === "onchange") { return def; } if (model === "foo" && method === "write") { @@ -17320,7 +17320,7 @@ QUnit.module("Views", (hooks) => { `, mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step(`onchange:${args.model}`); } }, @@ -17740,7 +17740,7 @@ QUnit.module("Views", (hooks) => { `, async mockRPC(route, args) { assert.step(args.method); - if (args.method === "onchange2") { + if (args.method === "onchange") { await Promise.resolve(def); } }, @@ -17752,7 +17752,7 @@ QUnit.module("Views", (hooks) => { // add a new line await click($(".o_list_button_add:visible").get(0)); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // we want to add a delay to simulate an onchange def = makeDeferred(); @@ -17765,7 +17765,7 @@ QUnit.module("Views", (hooks) => { // check that nothing changed before the onchange finished assert.strictEqual(target.querySelector("[name=int_field] input").value, value); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); // unlock onchange def.resolve(); @@ -19327,7 +19327,7 @@ QUnit.module("Views", (hooks) => { `, async mockRPC(route, args) { - if (args.method === "onchange2") { + if (args.method === "onchange") { assert.step("onchange"); await def; return { value: { m2o: [3, "Value 3"] } }; diff --git a/addons/web/static/tests/views/widgets/attach_document_tests.js b/addons/web/static/tests/views/widgets/attach_document_tests.js index f55a0f02a07..afffe84f593 100644 --- a/addons/web/static/tests/views/widgets/attach_document_tests.js +++ b/addons/web/static/tests/views/widgets/attach_document_tests.js @@ -145,7 +145,7 @@ QUnit.module("Widgets", (hooks) => { `, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await editInput(target, "[name='display_name'] input", "yop"); await click(target, ".o_attach_document"); diff --git a/addons/web/static/tests/webclient/actions/load_state_tests.js b/addons/web/static/tests/webclient/actions/load_state_tests.js index 05d2b33536a..07bf62a446c 100644 --- a/addons/web/static/tests/webclient/actions/load_state_tests.js +++ b/addons/web/static/tests/webclient/actions/load_state_tests.js @@ -289,7 +289,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/webclient/load_menus", "/web/action/load", "get_views", - "onchange2", + "onchange", ]); }); @@ -634,7 +634,7 @@ QUnit.module("ActionManager", (hooks) => { view_type: "form", id: "", }); - assert.verifySteps(["/web/dataset/call_kw/partner/onchange2"]); + assert.verifySteps(["/web/dataset/call_kw/partner/onchange"]); assert.containsOnce(target, ".o_form_view .o_form_editable"); assert.deepEqual(getBreadCrumbTexts(target), ["Partner", "New"]); }); diff --git a/addons/web/static/tests/webclient/actions/server_action_tests.js b/addons/web/static/tests/webclient/actions/server_action_tests.js index bbfc6040342..63cbc0c7bf1 100644 --- a/addons/web/static/tests/webclient/actions/server_action_tests.js +++ b/addons/web/static/tests/webclient/actions/server_action_tests.js @@ -63,7 +63,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/webclient/load_menus", "/web/action/load", "get_views", - "onchange2", + "onchange", "/web/action/load", "/web/action/run", "close handler", diff --git a/addons/web/static/tests/webclient/actions/target_tests.js b/addons/web/static/tests/webclient/actions/target_tests.js index d44d6c6696c..a68aa9de2d2 100644 --- a/addons/web/static/tests/webclient/actions/target_tests.js +++ b/addons/web/static/tests/webclient/actions/target_tests.js @@ -48,7 +48,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/webclient/load_menus", "/web/action/load", "get_views", - "onchange2", + "onchange", ]); }); @@ -143,7 +143,7 @@ QUnit.module("ActionManager", (hooks) => { assert.verifySteps([ "/web/action/load", "/web/dataset/call_kw/partner/get_views", - "/web/dataset/call_kw/partner/onchange2", + "/web/dataset/call_kw/partner/onchange", ]); await testUtils.dom.click(`button[name="5"]`); assert.verifySteps([ @@ -151,7 +151,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/dataset/call_kw/partner/web_read", "/web/action/load", "/web/dataset/call_kw/partner/get_views", - "/web/dataset/call_kw/partner/onchange2", + "/web/dataset/call_kw/partner/onchange", ]); assert.containsOnce(document.body, ".modal"); await testUtils.dom.click(`button[name="some_method"]`); diff --git a/addons/web/static/tests/webclient/actions/window_action_tests.js b/addons/web/static/tests/webclient/actions/window_action_tests.js index 0d0b9e5a6dd..934efa17bdf 100644 --- a/addons/web/static/tests/webclient/actions/window_action_tests.js +++ b/addons/web/static/tests/webclient/actions/window_action_tests.js @@ -185,7 +185,7 @@ QUnit.module("ActionManager", (hooks) => { "web_read_group", "unity_web_search_read", "unity_web_search_read", - "onchange2", + "onchange", "name_create", "web_read", "web_read", @@ -709,7 +709,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/action/load", "get_views", "unity_web_search_read", - "onchange2", + "onchange", "unity_web_search_read", ]); }); @@ -790,7 +790,7 @@ QUnit.module("ActionManager", (hooks) => { }; const def = testUtils.makeTestPromise(); const mockRPC = async (route, args) => { - if (args.method === "onchange2") { + if (args.method === "onchange") { // delay the opening of the dialog await def; } @@ -1663,7 +1663,7 @@ QUnit.module("ActionManager", (hooks) => { "/web/action/load", "get_views", "unity_web_search_read", - "onchange2", + "onchange", "get_formview_action", "create", // FIXME: to check with mcm "get_views", @@ -1948,7 +1948,7 @@ QUnit.module("ActionManager", (hooks) => { async function (assert) { serverData.views["partner,false,form"] = `
`; const mockRPC = (route, args) => { - if (args.method === "onchange2") { + if (args.method === "onchange") { return Promise.resolve({ value: {}, warning: { @@ -2164,7 +2164,7 @@ QUnit.module("ActionManager", (hooks) => { .add("odoo.exceptions.ValidationError", WarningDialogWait); const mockRPC = (route, args) => { - if (args.method === "onchange2" && args.model === "partner") { + if (args.method === "onchange" && args.model === "partner") { throw makeServerError({ type: "ValidationError" }); } }; diff --git a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js index a1f602f8eb2..81ce163ae48 100644 --- a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js +++ b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js @@ -412,12 +412,12 @@ QUnit.module("SettingsFormView", (hooks) => { assert.notOk(target.querySelector(".o_field_boolean input").disabled); assert.verifySteps([ "get_views", // initial setting action - "onchange2", // this is a setting view => new record transient record + "onchange", // this is a setting view => new record transient record "create", // create the record before doing the action "web_read", // read the created record "get_views", // for other action in breadcrumb, "unity_web_search_read", // with a searchread - "onchange2", // when we come back, we want to restart from scratch + "onchange", // when we come back, we want to restart from scratch ]); } ); @@ -550,7 +550,7 @@ QUnit.module("SettingsFormView", (hooks) => { assert.verifySteps([ "get_views", // initial setting action - "onchange2", // this is a setting view => new record transient record + "onchange", // this is a setting view => new record transient record ]); await click(target.querySelector("button[name='4']")); @@ -559,14 +559,14 @@ QUnit.module("SettingsFormView", (hooks) => { "create", // settings: create the record before doing the action "web_read", // settings: read the created record "get_views", // dialog: get views - "onchange2", // dialog: onchange + "onchange", // dialog: onchange ]); await click(target, ".modal button.btn.btn-primary.o_form_button_save"); assert.verifySteps([ "create", // dialog: create the record before doing back to the settings "web_read", // dialog: read the created record - "onchange2", // settings: when we come back, we want to restart from scratch + "onchange", // settings: when we come back, we want to restart from scratch ]); }); @@ -1034,7 +1034,7 @@ QUnit.module("SettingsFormView", (hooks) => { }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await click(target, ".o_field_boolean input[type='checkbox']"); await click(target, ".myBtn"); await click(target, ".modal .btn-primary"); @@ -1075,7 +1075,7 @@ QUnit.module("SettingsFormView", (hooks) => { }, }); - assert.verifySteps(["get_views", "onchange2"]); + assert.verifySteps(["get_views", "onchange"]); await click(target, ".o_field_boolean input[type='checkbox']"); await click(target, ".myBtn"); await click(target.querySelectorAll(".modal .btn-secondary")[1]); @@ -1479,7 +1479,7 @@ QUnit.module("SettingsFormView", (hooks) => { "/web/webclient/load_menus", "/web/action/load", "get_views", - "onchange2", + "onchange", ]); assert.containsNone( target, @@ -1497,7 +1497,7 @@ QUnit.module("SettingsFormView", (hooks) => { ".o_field_boolean input:checked", "checkbox should not be checked" ); - assert.verifySteps(["onchange2"]); + assert.verifySteps(["onchange"]); }); QUnit.test("Settings Radio widget: show and search", async function (assert) { diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index af97c306b3a..fa1cd7237c0 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -1737,7 +1737,7 @@ class UsersView(models.Model): valid_fields = partition(is_reified_group, fnames)[1] return super()._read_format(valid_fields, load) - def onchange2(self, values, field_names, fields_spec): + def onchange(self, values, field_names, fields_spec): reified_fnames = [fname for fname in fields_spec if is_reified_group(fname)] if reified_fnames: values = {key: val for key, val in values.items() if key != 'groups_id'} @@ -1754,7 +1754,7 @@ class UsersView(models.Model): } fields_spec['groups_id'] = {} - result = super().onchange2(values, field_names, fields_spec) + result = super().onchange(values, field_names, fields_spec) if reified_fnames and 'groups_id' in result.get('value', {}): self._add_reified_groups(reified_fnames, result['value']) diff --git a/odoo/addons/test_new_api/tests/__init__.py b/odoo/addons/test_new_api/tests/__init__.py index fb9e5fb6eb1..2f39b0a808d 100644 --- a/odoo/addons/test_new_api/tests/__init__.py +++ b/odoo/addons/test_new_api/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from . import test_new_fields -from . import test_onchange2 +from . import test_onchange from . import test_attributes from . import test_one2many from . import test_many2many diff --git a/odoo/addons/test_new_api/tests/test_onchange2.py b/odoo/addons/test_new_api/tests/test_onchange.py similarity index 95% rename from odoo/addons/test_new_api/tests/test_onchange2.py rename to odoo/addons/test_new_api/tests/test_onchange.py index 7509823eb7f..73d1c33bd28 100644 --- a/odoo/addons/test_new_api/tests/test_onchange2.py +++ b/odoo/addons/test_new_api/tests/test_onchange.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from unittest import skip from unittest.mock import patch from odoo.addons.base.tests.common import SavepointCaseWithUserDemo @@ -15,7 +14,7 @@ def strip_prefix(prefix, names): return [name[size:] for name in names if name.startswith(prefix)] -class TestOnchange2(SavepointCaseWithUserDemo): +class TestOnchange(SavepointCaseWithUserDemo): def setUp(self): super().setUp() @@ -31,7 +30,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): user = self.env.user fields_spec = self.env['test_new_api.message']._get_fields_spec() - values = self.env['test_new_api.message'].onchange2({}, [], fields_spec)['value'] + values = self.env['test_new_api.message'].onchange({}, [], fields_spec)['value'] self.assertEqual(values['discussion'], False) self.assertEqual(values['body'], False) self.assertEqual(values['author'], {'id': user.id, 'display_name': user.display_name}) @@ -47,7 +46,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): self.assertEqual(values, {'tags': [Command.set(tag.ids)]}) fields_spec = {'tags': {}} - result = model.onchange2({}, [], fields_spec) + result = model.onchange({}, [], fields_spec) self.assertEqual(result['value'], {'tags': [(Command.LINK, tag.id, {'id': tag.id})]}) def test_get_field(self): @@ -80,7 +79,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'size': 0, } self.env.invalidate_all() - result = self.Message.onchange2(values, ['discussion'], fields_spec) + result = self.Message.onchange(values, ['discussion'], fields_spec) self.assertEqual(result['value'], { 'name': f"[{discussion.name}] {USER.name}", }) @@ -94,7 +93,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'size': 0, } self.env.invalidate_all() - result = self.Message.onchange2(values, ['body'], fields_spec) + result = self.Message.onchange(values, ['body'], fields_spec) self.assertEqual(result['value'], { 'size': len(BODY), }) @@ -109,7 +108,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'size': 0, } self.env.invalidate_all() - result = self.Message.onchange2(values, ['body'], fields_spec) + result = self.Message.onchange(values, ['body'], fields_spec) self.assertNotIn('name', result['value']) def test_onchange_many2one(self): @@ -133,7 +132,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'root_categ': False, } self.env.invalidate_all() - result = Category.onchange2(values, ['parent'], fields_spec) + result = Category.onchange(values, ['parent'], fields_spec) self.assertEqual(result['value'], { 'root_categ': {'id': root.id, 'display_name': root.name}, }) @@ -145,7 +144,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'root_categ': root.id, } self.env.invalidate_all() - result = Category.onchange2(values, ['parent'], fields_spec) + result = Category.onchange(values, ['parent'], fields_spec) self.assertEqual(result['value'], { 'root_categ': False, }) @@ -194,7 +193,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): ], } self.env.invalidate_all() - result = self.Discussion.onchange2(values, ['name'], fields_spec) + result = self.Discussion.onchange(values, ['name'], fields_spec) self.assertIn('messages', result['value']) self.assertEqual(result['value']['messages'], [ Command.update(message1.id, {'name': f"[Foo] {USER.name}"}), @@ -205,7 +204,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): # ensure onchange changing one2many without subfield works one_level_fields_spec = {field_name: {} for field_name in fields_spec} values = dict(values, name='{generate_dummy_message}') - result = self.Discussion.with_context(generate_dummy_message=True).onchange2(values, ['name'], one_level_fields_spec) + result = self.Discussion.with_context(generate_dummy_message=True).onchange(values, ['name'], one_level_fields_spec) self.assertEqual(result['value']['messages'], [ Command.create({}), ]) @@ -248,7 +247,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): ], } self.env.invalidate_all() - result = self.Discussion.onchange2(values, ['name'], fields_spec) + result = self.Discussion.onchange(values, ['name'], fields_spec) self.assertIn('messages', result['value']) self.assertItemsEqual(result['value']['messages'], [ (Command.UPDATE, 'virtual1', {'name': f"[Foo] {USER.name}"}), @@ -293,7 +292,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): } self.env.invalidate_all() - result = multi.onchange2(values, ['partner'], fields_spec) + result = multi.onchange(values, ['partner'], fields_spec) self.assertEqual(result['value'], { 'name': partner2.name, 'lines': [ @@ -321,7 +320,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): ], } self.env.invalidate_all() - result = multi.onchange2(values, ['partner'], fields_spec) + result = multi.onchange(values, ['partner'], fields_spec) expected_value = { 'name': partner2.name, 'lines': [ @@ -342,7 +341,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): fields_spec = multi._get_fields_spec() fields_spec['lines']['fields']['tags']['fields']['id'] = {} - result = multi.onchange2(values, ['partner'], fields_spec) + result = multi.onchange(values, ['partner'], fields_spec) self.assertEqual(result['value'], expected_value) # ensure inverse of one2many field is not returned @@ -350,7 +349,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): fields_spec = multi._get_fields_spec() fields_spec['lines']['fields']['multi'] = {} - result = multi.onchange2(values, ['partner'], fields_spec) + result = multi.onchange(values, ['partner'], fields_spec) self.assertEqual(result['value'], expected_value) def test_onchange_one2many_default(self): @@ -371,7 +370,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'body': {}, }}, } - result = model.onchange2(values, ['name'], fields_spec) + result = model.onchange(values, ['name'], fields_spec) self.assertEqual(result['value'], { 'messages': [Command.update('virtual1', {'name': '[Stuff] OdooBot'})], }) @@ -394,7 +393,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'moderator': demo.id, } self.env.invalidate_all() - result = discussion.onchange2(values, ['moderator'], fields_spec) + result = discussion.onchange(values, ['moderator'], fields_spec) self.assertIn('participants', result['value']) self.assertItemsEqual( @@ -415,13 +414,13 @@ class TestOnchange2(SavepointCaseWithUserDemo): # setting 'value1' to 42 should trigger the change of 'value2' self.env.invalidate_all() values = {'name': 'X', 'value1': 42, 'value2': False} - result = Foo.onchange2(values, ['value1'], fields_spec) + result = Foo.onchange(values, ['value1'], fields_spec) self.assertEqual(result['value'], {'value2': 666}) # setting 'value1' to 24 should not trigger the change of 'value2' self.env.invalidate_all() values = {'name': 'X', 'value1': 24, 'value2': False} - result = Foo.onchange2(values, ['value1'], fields_spec) + result = Foo.onchange(values, ['value1'], fields_spec) self.assertEqual(result['value'], {}) def test_onchange_one2many_first(self): @@ -478,7 +477,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'participants': [Command.link(usr.id) for usr in discussion.participants], 'message_concat': False, } - result = discussion.onchange2(values, ['messages'], fields_spec) + result = discussion.onchange(values, ['messages'], fields_spec) self.assertIn('message_concat', result['value']) self.assertEqual(result['value']['message_concat'], "\n".join(lines)) @@ -545,7 +544,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'important_emails': [Command.set(discussion.important_emails.ids)], } self.env.invalidate_all() - result = discussion.onchange2(values, ['name'], fields_spec) + result = discussion.onchange(values, ['name'], fields_spec) self.assertEqual( result['value']['important_emails'], @@ -575,13 +574,13 @@ class TestOnchange2(SavepointCaseWithUserDemo): self.env.invalidate_all() Message = self.env['test_new_api.related'] - result = Message.onchange2(values, ['message'], fields_spec) + result = Message.onchange(values, ['message'], fields_spec) self.assertEqual(result['value'], expected) self.env.invalidate_all() Message = self.env(user=self.user_demo.id)['test_new_api.related'] - result = Message.onchange2(values, ['message'], fields_spec) + result = Message.onchange(values, ['message'], fields_spec) self.assertEqual(result['value'], expected) @@ -617,7 +616,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): # changing 'discussion' on message should not read 'messages' on discussion with patch.object(type(discussion), 'read', mock_read, create=True): self.env.invalidate_all() - self.Message.onchange2(values, ['discussion'], fields_spec) + self.Message.onchange(values, ['discussion'], fields_spec) self.assertFalse(called[0], "discussion.messages has been read") @@ -634,7 +633,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'order_id': {}, 'subtotal': {}, } - result = self.env['test_new_api.monetary_order_line'].onchange2(values, [], fields_spec) + result = self.env['test_new_api.monetary_order_line'].onchange(values, [], fields_spec) self.assertEqual(result['value']['order_id'], order.id) @@ -727,7 +726,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'name': "{generate_dummy_message}", } - result = self.Discussion.with_context(generate_dummy_message=True).onchange2(values, ['name'], fields_spec) + result = self.Discussion.with_context(generate_dummy_message=True).onchange(values, ['name'], fields_spec) self.assertEqual(result['value']['messages'], [ Command.create({ 'name': f'[{{generate_dummy_message}}] {USER.name}', @@ -753,7 +752,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'root_categ': False, } self.env.invalidate_all() - result = Category.onchange2(values, ['parent'], fields_spec) + result = Category.onchange(values, ['parent'], fields_spec) self.assertEqual(result['value'], { 'root_categ': {'id': root.id, 'display_name': root.name, 'color': root.color}, }) @@ -802,7 +801,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): } self.env.invalidate_all() - result = multi.onchange2(values, ['partner'], fields_spec) + result = multi.onchange(values, ['partner'], fields_spec) self.assertEqual(result['value'], { 'name': partner.name, 'lines': [ @@ -850,7 +849,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): } self.env.invalidate_all() - result = multi.onchange2(values, ['tags'], fields_spec) + result = multi.onchange(values, ['tags'], fields_spec) self.assertEqual(result['value'], { 'lines': [ Command.update(line.id, { @@ -885,7 +884,7 @@ class TestOnchange2(SavepointCaseWithUserDemo): 'tags': {}, } self.env.invalidate_all() - result = multi.onchange2(values, ['tags'], fields_spec) + result = multi.onchange(values, ['tags'], fields_spec) self.assertEqual(result['value'], { 'lines': [ Command.update(line.id, { @@ -1169,7 +1168,7 @@ class TestComputeOnchange2(common.TransactionCase): Command.update(line.id, {'value': 8, 'edit': 9, 'count': 0}), (Command.CREATE, 'virtual2', {'value': 8, 'edit': 9, 'count': 0}), ] - result = record.onchange2({'line_ids': line_ids}, ['line_ids'], fields_spec) + result = record.onchange({'line_ids': line_ids}, ['line_ids'], fields_spec) expected = {'value': { 'line_ids': [ Command.update(line.id, {'count': 8}), @@ -1183,7 +1182,7 @@ class TestComputeOnchange2(common.TransactionCase): (op, id_, dict(reversed(list(vals.items())))) for op, id_, vals in line_ids ] - result = record.onchange2({'line_ids': line_ids}, ['line_ids'], fields_spec) + result = record.onchange({'line_ids': line_ids}, ['line_ids'], fields_spec) self.assertEqual(result, expected) def test_computed_editable_one2many_domain(self): diff --git a/odoo/addons/test_new_api/tests/test_properties.py b/odoo/addons/test_new_api/tests/test_properties.py index f08eb8871a1..5bb2f5a2578 100644 --- a/odoo/addons/test_new_api/tests/test_properties.py +++ b/odoo/addons/test_new_api/tests/test_properties.py @@ -1409,7 +1409,7 @@ class PropertiesCase(TestPropertiesMixin): 'value': 'Test', }], } - result = message.onchange2(values, ['discussion'], fields_spec) + result = message.onchange(values, ['discussion'], fields_spec) self.assertIn('attributes', result['value'], 'Should have detected the definition record change') self.assertEqual(result['value']['attributes'], [], 'Should have reset the properties definition') @@ -1420,7 +1420,7 @@ class PropertiesCase(TestPropertiesMixin): 'discussion': self.discussion_2.id, 'attributes': [], } - result = message.onchange2(values, ['discussion'], fields_spec) + result = message.onchange(values, ['discussion'], fields_spec) self.assertIn('attributes', result['value'], 'Should have detected the definition record change') self.assertEqual( result['value']['attributes'], diff --git a/odoo/models.py b/odoo/models.py index 8ee2e6f0cc3..3444a82fd12 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -6418,21 +6418,16 @@ class BaseModel(metaclass=MetaModel): for dep in self.pool.get_dependent_fields(field.base_field) ) - def _onchange_eval(self, field_name, onchange, result): - """ Apply onchange method(s) for field ``field_name`` with spec ``onchange`` - on record ``self``. Value assignments are applied on ``self``, while - domain and warning messages are put in dictionary ``result``. + def _apply_onchange_methods(self, field_name, result): + """ Apply onchange method(s) for field ``field_name`` on ``self``. Value + assignments are applied on ``self``, while warning messages are put + in dictionary ``result``. """ - onchange = onchange.strip() - if onchange not in ("1", "true"): - return - for method in self._onchange_methods.get(field_name, ()): res = method(self) if not res: continue if res.get('value'): - res['value'].pop('id', None) for key, val in res['value'].items(): if key in self._fields and key != 'id': self[key] = val diff --git a/odoo/tests/form.py b/odoo/tests/form.py index 2385dcdd718..5168bfc10b5 100644 --- a/odoo/tests/form.py +++ b/odoo/tests/form.py @@ -529,7 +529,7 @@ class Form: record = record.with_context(**context) values = self._get_onchange_values() - result = record.onchange2(values, field_names, self._view['fields_spec']) + result = record.onchange(values, field_names, self._view['fields_spec']) self._env.flush_all() self._env.clear() # discard cache and pending recomputations