diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js index 1833d263082..8ae66848b75 100644 --- a/addons/web/static/src/js/views/form/form_controller.js +++ b/addons/web/static/src/js/views/form/form_controller.js @@ -50,9 +50,11 @@ var FormController = BasicController.extend({ * This method switches the form view in edit mode, with a new record. * * @todo make record creation a basic controller feature + * @param {string} [parentID] if given, the parentID will be used as parent + * for the new record. * @returns {Deferred} */ - createRecord: function () { + createRecord: function (parentID) { var self = this; var record = this.model.get(this.handle, {raw: true}); return this.model.load({ @@ -60,6 +62,7 @@ var FormController = BasicController.extend({ fields: record.fields, fieldsInfo: record.fieldsInfo, modelName: this.modelName, + parentID: parentID, res_ids: record.res_ids, type: 'record', viewType: 'form', diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 956886910ce..b84d60d5b7c 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -133,7 +133,7 @@ var FormViewDialog = ViewDialog.extend({ text: _t("Save & New"), classes: "btn-primary", click: function () { - this._save().then(self.form_view.createRecord.bind(self.form_view)); + this._save().then(self.form_view.createRecord.bind(self.form_view, self.parentID)); }, }); } diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 14e7c08517d..9cce413b618 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4709,5 +4709,56 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('context is correctly passed after save & new in FormViewDialog', function (assert) { + assert.expect(3); + + var form = createView({ + View: FormView, + model: 'partner', + res_id: 4, + data: this.data, + arch: '
', + archs: { + 'product,false,form': + '', + 'product,false,list': '