[REF] *: rename onchange2 to onchange
closes odoo/odoo#133049 Related: odoo/enterprise#46240 Signed-off-by: Raphael Collet <rco@odoo.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -54,7 +54,7 @@ QUnit.test(
|
||||
<field name="description" onchange_on_keydown="True" keydown_debounce_delay="0"/>
|
||||
</form>`,
|
||||
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);
|
||||
|
||||
@@ -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",
|
||||
]);
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -320,7 +320,7 @@ QUnit.module("Mobile Views", ({ beforeEach }) => {
|
||||
</form>
|
||||
`,
|
||||
mockRPC(route, { method, args }) {
|
||||
if (method === "onchange2" && args[2][0] === "display_name") {
|
||||
if (method === "onchange" && args[2][0] === "display_name") {
|
||||
return onchangeDef;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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]]"]);
|
||||
});
|
||||
|
||||
@@ -749,7 +749,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</field>
|
||||
</form>`,
|
||||
async mockRPC(route, { method }) {
|
||||
if (method === "onchange2") {
|
||||
if (method === "onchange") {
|
||||
await def;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -48,7 +48,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</group>
|
||||
</form>`,
|
||||
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) => {
|
||||
<field name="hex_color" widget="color" />
|
||||
</form>`,
|
||||
mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
assert.step(`onchange ${JSON.stringify(args.args)}`);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -132,8 +132,8 @@ QUnit.module("Fields", (hooks) => {
|
||||
serverData,
|
||||
arch: '<form><field name="datetime"/></form>',
|
||||
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"]);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</form>`,
|
||||
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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) => {
|
||||
</sheet>
|
||||
</form>`,
|
||||
mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
if (firstOnChange) {
|
||||
firstOnChange = false;
|
||||
return {
|
||||
@@ -2020,7 +2020,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
<field name="timmy" widget="many2many_tags" context="{ 'default_partner_id': active_id, 'ids': active_ids, 'model': active_model, 'company_id': current_company_id}"/>
|
||||
</tree>`,
|
||||
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) => {
|
||||
<field name="timmy" widget="many2many_tags" context="{ 'default_partner_id': active_id, 'ids': active_ids, 'model': active_model, 'company_id': current_company_id}"/>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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]);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -347,7 +347,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
<field name="trululu" context="{'blip': int_field, 'blop': 3}" />
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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
|
||||
|
||||
@@ -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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</sheet>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
async mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
await Promise.resolve(def);
|
||||
}
|
||||
},
|
||||
@@ -8022,7 +8022,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</field>
|
||||
</form>`,
|
||||
async mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
await Promise.resolve(def);
|
||||
}
|
||||
},
|
||||
@@ -8119,7 +8119,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
assert.deepEqual(
|
||||
args.kwargs.context,
|
||||
{
|
||||
@@ -8287,7 +8287,7 @@ QUnit.module("Fields", (hooks) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</sheet>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</sheet>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
async mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
return {
|
||||
value: {
|
||||
p: [
|
||||
|
||||
@@ -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) => {
|
||||
<field name="display_name"/>
|
||||
</tree>`,
|
||||
mockRPC: (route, { method, args }) => {
|
||||
if (method === "onchange2") {
|
||||
if (method === "onchange") {
|
||||
return {
|
||||
value: {
|
||||
reference: {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -1068,7 +1068,7 @@ QUnit.module("Views", (hooks) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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: `<form><field name="foo"/><field name="int_field"/></form>`,
|
||||
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: `<form><field name="foo"/><field name="int_field"/></form>`,
|
||||
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: `<form><field name="foo"/><field name="int_field"/></form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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: `<form><field name="foo"/><field name="int_field"/></form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
<field name="int_field" context="{'int_ctx': 1}"/>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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: `<form><group><field name="foo"/></group></form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</field>
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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) => {
|
||||
</form>`,
|
||||
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" });
|
||||
|
||||
@@ -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) => {
|
||||
"</t></templates></kanban>",
|
||||
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
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -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) => {
|
||||
</tree>`,
|
||||
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) => {
|
||||
</tree>`,
|
||||
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) => {
|
||||
</group>
|
||||
</form>`,
|
||||
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: '<tree editable="top"><field name="m2o" required="1"/></tree>',
|
||||
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) => {
|
||||
</tree>`,
|
||||
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) => {
|
||||
</tree>`,
|
||||
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) => {
|
||||
<field name="int_field"/>
|
||||
</tree>`,
|
||||
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) => {
|
||||
<field name="int_field"/>
|
||||
</tree>`,
|
||||
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) => {
|
||||
</group>
|
||||
</form>`,
|
||||
mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
assert.step(`onchange:${args.model}`);
|
||||
}
|
||||
},
|
||||
@@ -17740,7 +17740,7 @@ QUnit.module("Views", (hooks) => {
|
||||
</tree>`,
|
||||
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) => {
|
||||
<field name="m2o"/>
|
||||
</tree>`,
|
||||
async mockRPC(route, args) {
|
||||
if (args.method === "onchange2") {
|
||||
if (args.method === "onchange") {
|
||||
assert.step("onchange");
|
||||
await def;
|
||||
return { value: { m2o: [3, "Value 3"] } };
|
||||
|
||||
@@ -145,7 +145,7 @@ QUnit.module("Widgets", (hooks) => {
|
||||
<field name="display_name" required="1"/>
|
||||
</form>`,
|
||||
});
|
||||
assert.verifySteps(["get_views", "onchange2"]);
|
||||
assert.verifySteps(["get_views", "onchange"]);
|
||||
|
||||
await editInput(target, "[name='display_name'] input", "yop");
|
||||
await click(target, ".o_attach_document");
|
||||
|
||||
@@ -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"]);
|
||||
});
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"]`);
|
||||
|
||||
@@ -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"] = `<form><field name="foo"/></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" });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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'])
|
||||
|
||||
@@ -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
|
||||
|
||||
+32
-33
@@ -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):
|
||||
@@ -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'],
|
||||
|
||||
+4
-9
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user