summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2017-04-06 19:57:59 +0200
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commitd1d80a494b2a0a9e55a3232dbff291ea9f65da1b (patch)
tree2637cca620dbaaf77f6bdd0e4f97c96e814e7561 /addons
parent64a9398fb385896cafe7725d7361e6131561f606 (diff)
[FIX] web: make sure buttons are called with proper res_id
Before this commit, clicking on buttons did not reload the current record, which is good. However, it kept the reference to the record after saving, even if that record could have been changed, which is definitely the case when starting from a new record and saving it (it will have the correct res_id, which is really important).
Diffstat (limited to 'addons')
-rw-r--r--addons/web/static/src/js/views/form/form_controller.js6
-rw-r--r--addons/web/static/test/views/form_tests.js12
2 files changed, 16 insertions, 2 deletions
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 4a0561e2eca..7435332ecf4 100644
--- a/addons/web/static/src/js/views/form/form_controller.js
+++ b/addons/web/static/src/js/views/form/form_controller.js
@@ -454,7 +454,11 @@ var FormController = BasicController.extend({
} else {
// save the record but don't switch to readonly mode
def = this.saveRecord({stayInEdit: true, reload: false}).then(function () {
- return self._callButtonAction(attrs, event.data.record);
+ // we need to reget the record to make sure we have changes made
+ // by the basic model, such as the new res_id, if the record is
+ // new.
+ var record = self.model.get(event.data.record.id);
+ return self._callButtonAction(attrs, record);
});
}
def.then(function () {
diff --git a/addons/web/static/test/views/form_tests.js b/addons/web/static/test/views/form_tests.js
index a1271785d38..fdd5fd84c64 100644
--- a/addons/web/static/test/views/form_tests.js
+++ b/addons/web/static/test/views/form_tests.js
@@ -662,7 +662,9 @@ QUnit.module('Views', {
QUnit.test('buttons in form view, new record', function (assert) {
// this simulates a situation similar to the settings forms.
- assert.expect(5);
+ assert.expect(6);
+
+ var resID;
var form = createView({
View: FormView,
@@ -681,12 +683,20 @@ QUnit.module('Views', {
'</form>',
mockRPC: function (route, args) {
assert.step(args.method);
+ if (args.method === 'create') {
+ return this._super.apply(this, arguments).then(function (result) {
+ resID = result;
+ return resID;
+ });
+ }
return this._super.apply(this, arguments);
},
});
testUtils.intercept(form, 'execute_action', function (event) {
assert.step('execute_action');
+ assert.strictEqual(event.data.record_id, resID,
+ "execute action should be done on correct record id");
event.data.on_success();
});
form.$('.o_form_statusbar button.p').click();