[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).
This commit is contained in:
committed by
Aaron Bohy
parent
64a9398fb3
commit
d1d80a494b
@@ -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 () {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user