diff options
| author | Mohammed Shekha <msh@odoo.com> | 2019-08-19 07:06:39 +0000 |
|---|---|---|
| committer | Pierre Masereel <pim@odoo.com> | 2019-08-27 12:13:43 +0000 |
| commit | 6952ee18bce6fa2274e1e960cec5f5f4df67ef23 (patch) | |
| tree | e33b424b5a9b7690f30ffa17dc53c958d516e2a4 | |
| parent | e74c6ef86a63b7d8ef50d8214b8ac48ea9f69f7e (diff) | |
[FIX] web: crashmanager wrong syntax of arrow function
arrow function used for error handler and error function is defined
inside inner function so this will get changed, need to use self,
also arrow function doesn't have its own arguments object,
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Issue raised from following commit:
https://github.com/odoo/odoo/commit/2d6dc75a2cb5fa81189920d0f7fdc7b7f12132ab
task-2052484
closes odoo/odoo#35788
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
6 files changed, 46 insertions, 6 deletions
diff --git a/addons/stock/static/src/js/stock_traceability_report_backend.js b/addons/stock/static/src/js/stock_traceability_report_backend.js index 31e42767cf5..9a3b7872947 100644 --- a/addons/stock/static/src/js/stock_traceability_report_backend.js +++ b/addons/stock/static/src/js/stock_traceability_report_backend.js @@ -103,7 +103,7 @@ var stock_report_generic = AbstractAction.extend({ url: url_data.replace('output_format', 'pdf'), data: {data: JSON.stringify(dict)}, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => self.call('crash_manager', 'rpc_error', error), }); }); return this.$buttons; diff --git a/addons/web/static/src/js/chrome/action_manager_report.js b/addons/web/static/src/js/chrome/action_manager_report.js index 416cad6a942..5c1c5cbeb8e 100644 --- a/addons/web/static/src/js/chrome/action_manager_report.js +++ b/addons/web/static/src/js/chrome/action_manager_report.js @@ -53,8 +53,8 @@ ActionManager.include({ data: JSON.stringify([url, type]), }, success: resolve, - error: () => { - this.call('crash_manager', 'rpc_error', ...arguments); + error: (error) => { + self.call('crash_manager', 'rpc_error', error); reject(); }, complete: framework.unblockUI, diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index a782e128bc7..664ce51b570 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1941,7 +1941,7 @@ var FieldBinaryFile = AbstractFieldBinary.extend({ 'download': true, 'data': utils.is_bin_size(this.value) ? null : this.value, }, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), url: '/web/content', }); ev.stopPropagation(); diff --git a/addons/web/static/src/js/views/pivot/pivot_controller.js b/addons/web/static/src/js/views/pivot/pivot_controller.js index 7875dcef52e..998d6ccc22c 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -150,7 +150,7 @@ var PivotController = AbstractController.extend({ url: '/web/pivot/export_xls', data: {data: JSON.stringify(table)}, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), }); }, /** diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index 964e03e4aa1..64d54d942a1 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -178,7 +178,7 @@ var DataExport = Dialog.extend({ }) }, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), }); }, /** diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 26ec7b1562b..bc40fc97011 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -2205,6 +2205,46 @@ QUnit.module('ActionManager', { testUtils.mock.unpatch(ReportClientAction); }); + QUnit.test('crashmanager service called on failed report download actions', async function (assert) { + assert.expect(1); + + var actionManager = await createActionManager({ + data: this.data, + actions: this.actions, + services: { + report: ReportService, + }, + mockRPC: function (route) { + if (route === '/report/check_wkhtmltopdf') { + return Promise.resolve('ok'); + } + return this._super.apply(this, arguments); + }, + session: { + get_file: function (params) { + params.error({ + data: { + name: 'error', + exception_type: 'warning', + arguments: ['could not download file'], + } + }); + params.complete(); + }, + }, + }); + + try { + await actionManager.doAction(11); + } catch (e) { + // e is undefined if we land here because of a rejected promise, + // otherwise, it is an Error, which is not what we expect + assert.strictEqual(e, undefined); + } + + actionManager.destroy(); + }); + QUnit.module('Window Actions'); QUnit.test('can execute act_window actions from db ID', async function (assert) { |
