[FIX] web: Send attachment ids on file loaded
This commit fixes a bug introduced when migrating from jquery deferred to native JS Promises (ab56e63). Steps to reproduce: 1. Go to the Expense app 2. Create a new expense 3. Click on "Attach Document" and upload a file => crash and infinite loading spinner After loading files, the `attach_document` widget is supposed to call a callback action with attachment ids as argument. Currently, attachement ids are not correclty retrieved. They are retrieved via the `arguments` object but sinceab56e63`arguments` refers to the arguments of the Promise callback function and no longer to the handler function `_onFileLoaded` arguments. closes odoo/odoo#33048 Signed-off-by: VincentSchippefilt <VincentSchippefilt@users.noreply.github.com>
This commit is contained in:
@@ -109,10 +109,10 @@ var AttachDocument = Widget.extend({
|
||||
*/
|
||||
_onFileLoaded: function () {
|
||||
var self = this;
|
||||
// the first argument isn't a file but the jQuery.Event
|
||||
var files = Array.prototype.slice.call(arguments, 1);
|
||||
return new Promise(function (resolve) {
|
||||
if (self.node.attrs.action) {
|
||||
// the first argument isn't a file but the jQuery.Event
|
||||
var files = Array.prototype.slice.call(arguments, 1);
|
||||
self._rpc({
|
||||
model: self.res_model,
|
||||
method: self.node.attrs.action,
|
||||
|
||||
@@ -6801,6 +6801,32 @@ QUnit.module('Views', {
|
||||
delete widgetRegistry.map.test;
|
||||
});
|
||||
|
||||
QUnit.test('attach document widget calls action with attachment ids', async function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var form = await createView({
|
||||
View: FormView,
|
||||
model: 'partner',
|
||||
data: this.data,
|
||||
mockRPC: function (route, args) {
|
||||
if (args.method === 'my_action') {
|
||||
assert.deepEqual(args.kwargs.attachment_ids, [5, 2]);
|
||||
return Promise.resolve();
|
||||
}
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
arch: '<form>' +
|
||||
'<widget name="attach_document" action="my_action"/>' +
|
||||
'</form>',
|
||||
});
|
||||
|
||||
var onFileLoadedEventName = form.$('.o_form_binary_form').attr('target')
|
||||
// trigger _onFileLoaded function
|
||||
$(window).trigger(onFileLoadedEventName, [{id: 5}, {id:2}]);
|
||||
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('support header button as widgets on form statusbar', async function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user