diff --git a/addons/account/static/src/js/reconciliation/reconciliation_model.js b/addons/account/static/src/js/reconciliation/reconciliation_model.js index 7b2efb82de1..d0903f63abe 100644 --- a/addons/account/static/src/js/reconciliation/reconciliation_model.js +++ b/addons/account/static/src/js/reconciliation/reconciliation_model.js @@ -147,7 +147,7 @@ var StatementModel = BasicModel.extend({ autoReconciliation: function () { var self = this; var ids = _.pluck(_.filter(_.values(this.lines), {'reconciled': false}), 'id'); - return this.rpc("account.bank.statement.line", 'reconciliation_widget_auto_reconcile') + return this._rpc("account.bank.statement.line", 'reconciliation_widget_auto_reconcile') .args([ids, self.valuenow]) .exec() .then(function (result) { @@ -212,7 +212,7 @@ var StatementModel = BasicModel.extend({ * @returns {Deferred} */ changeName: function (name) { - return this.rpc("account.bank.statement", "write") + return this._rpc("account.bank.statement", "write") .args([this.bank_statement_id.id, {name: name}]) .exec(); }, @@ -293,7 +293,7 @@ var StatementModel = BasicModel.extend({ if (!statement_ids) { return $.when(); } - var def_statement = this.rpc("account.bank.statement", 'reconciliation_widget_preprocess') + var def_statement = this._rpc("account.bank.statement", 'reconciliation_widget_preprocess') .args([statement_ids]) .exec() .then(function (statement) { @@ -313,18 +313,23 @@ var StatementModel = BasicModel.extend({ }; }); }); - var def_reconcileModel = this.performRPC('/web/dataset/search_read', {model: 'account.reconcile.model', domain: []}).then(function (reconcileModels) { - self.reconcileModels = reconcileModels.records; - }); - var def_account = this.performRPC('/web/dataset/search_read', {model: 'account.account', domain: [], fields: ['code']}).then(function (accounts) { - self.accounts = _.object(_.pluck(accounts.records, 'id'), _.pluck(accounts.records, 'code')); - }); + var def_reconcileModel = this._rpc('account.reconcile.model', 'search_read') + .exec() + .then(function (reconcileModels) { + self.reconcileModels = reconcileModels.records; + }); + var def_account = this._rpc('account.account', 'search_read') + .withFields(['code']) + .exec() + .then(function (accounts) { + self.accounts = _.object(_.pluck(accounts.records, 'id'), _.pluck(accounts.records, 'code')); + }); return $.when(def_statement, def_reconcileModel, def_account).then(function () { _.each(self.lines, function (line) { line.reconcileModels = self.reconcileModels; }); var ids = _.pluck(self.lines, 'id'); - return self.rpc("account.bank.statement.line", 'get_data_for_reconciliation_widget') + return self._rpc("account.bank.statement.line", 'get_data_for_reconciliation_widget') .args([ids]) .exec() .then(self._formatLine.bind(self)); @@ -477,7 +482,7 @@ var StatementModel = BasicModel.extend({ self.valuenow++; }); - return this.rpc("account.bank.statement.line", 'process_reconciliations') + return this._rpc("account.bank.statement.line", 'process_reconciliations') .args([ids, values]) .exec() .then(function () { @@ -541,7 +546,7 @@ var StatementModel = BasicModel.extend({ }); var args = [[prop.tax_id.id], prop.base_amount, line.st_line.currency_id]; - tax_defs.push(self.rpc("account.tax", 'json_friendly_compute_all') + tax_defs.push(self._rpc("account.tax", 'json_friendly_compute_all') .args(args) .exec() .then(function (result) { @@ -775,7 +780,7 @@ var StatementModel = BasicModel.extend({ var offset = line.offset; var limit = 6; var args = [line.id, line.st_line.partner_id, excluded_ids, filter, offset, limit]; - return this.rpc("account.bank.statement.line", 'get_move_lines_for_reconciliation_widget') + return this._rpc("account.bank.statement.line", 'get_move_lines_for_reconciliation_widget') .args(args) .exec() .then(this._formatMoveLine.bind(this, handle)); @@ -830,10 +835,10 @@ var ManualModel = StatementModel.extend({ domain_account_id.push(['company_id', 'in', context.company_ids]); } - var def_account = this.performRPC('/web/dataset/search_read', { - model: 'account.account', - domain: domain_account_id, - fields: ['code']}) + var def_account = this._rpc('account.account', 'search_read') + .withDomain(domain_account_id) + .withFields(['code']) + .exec() .then(function (accounts) { self.account_ids = _.pluck(accounts.records, 'id'); self.accounts = _.object(self.account_ids, _.pluck(accounts.records, 'code')); @@ -845,7 +850,7 @@ var ManualModel = StatementModel.extend({ case 'suppliers': var mode = context.mode === 'customers' ? 'receivable' : 'payable'; var args = ['partner', context.partner_ids || null, mode]; - return self.rpc("account.move.line", 'get_data_for_manual_reconciliation') + return self._rpc("account.move.line", 'get_data_for_manual_reconciliation') .args(args) .exec() .then(function (result) { @@ -856,7 +861,7 @@ var ManualModel = StatementModel.extend({ }); case 'accounts': var args = ['account', self.account_ids]; - return self.rpc("account.move.line", 'get_data_for_manual_reconciliation') + return self._rpc("account.move.line", 'get_data_for_manual_reconciliation') .args(args) .exec() .then(function (result) { @@ -873,7 +878,7 @@ var ManualModel = StatementModel.extend({ account_ids = null; // TOFIX: REMOVE ME partner_ids = null; // TOFIX: REMOVE ME var args = [partner_ids, account_ids]; - return self.rpc("account.move.line", 'get_data_for_manual_reconciliation_widget') + return self._rpc("account.move.line", 'get_data_for_manual_reconciliation_widget') .args(args) .exec() .then(function (result) { @@ -939,7 +944,7 @@ var ManualModel = StatementModel.extend({ }); if (process_reconciliations.length) { - def = self.rpc("account.move.line", 'process_reconciliations') + def = self._rpc("account.move.line", 'process_reconciliations') .args([process_reconciliations]) .exec(); } @@ -968,12 +973,12 @@ var ManualModel = StatementModel.extend({ }); return $.when(defs).then(function() { if (account_ids.length) { - self.rpc("account.account", 'mark_as_reconciled') + self._rpc("account.account", 'mark_as_reconciled') .args([account_ids]) .exec(); } if (partner_ids.length) { - self.rpc("res.partner", 'mark_as_reconciled') + self._rpc("res.partner", 'mark_as_reconciled') .args([partner_ids]) .exec(); } @@ -1085,7 +1090,7 @@ var ManualModel = StatementModel.extend({ var offset = line.offset; var limit = 6; var args = [line.account_id.id, line.partner_id, excluded_ids, filter, offset, limit]; - return this.rpc("account.move.line", 'get_move_lines_for_manual_reconciliation') + return this._rpc("account.move.line", 'get_move_lines_for_manual_reconciliation') .args(args) .exec() .then(this._formatMoveLine.bind(this, handle)); diff --git a/addons/barcodes/static/src/js/barcode_parser.js b/addons/barcodes/static/src/js/barcode_parser.js index 926d8a11c82..d615e2e89fe 100644 --- a/addons/barcodes/static/src/js/barcode_parser.js +++ b/addons/barcodes/static/src/js/barcode_parser.js @@ -1,7 +1,6 @@ odoo.define('barcodes.BarcodeParser', function (require) { "use strict"; -var ajax = require('web.ajax'); var Class = require('web.Class'); var rpc = require('web.rpc'); @@ -21,9 +20,9 @@ var BarcodeParser = Class.extend({ var self = this; var id = this.nomenclature_id[0]; rpc.query({model: 'barcode.nomenclature', method: 'read'}) - .args([[id], ['name','rule_ids','upc_ean_conv']]) - .exec({callback: ajax.rpc.bind(ajax)}) - .then(function (nomenclatures){ + .args([[id], ['name','rule_ids','upc_ean_conv']]) + .exec({type: "ajax"}) + .then(function (nomenclatures){ self.nomenclature = nomenclatures[0]; var args = [ @@ -33,7 +32,7 @@ var BarcodeParser = Class.extend({ return rpc .query({model: 'barcode.rule', method: 'search_read'}) .args(args) - .exec({callback: ajax.rpc.bind(ajax)}); + .exec({type: "ajax"}); }).then(function(rules){ rules = rules.records.sort(function(a, b){ return a.sequence - b.sequence; }); self.nomenclature.rules = rules; diff --git a/addons/base_import/static/src/js/base_import.js b/addons/base_import/static/src/js/base_import.js index 7e8dc588e10..824f6c1dda8 100644 --- a/addons/base_import/static/src/js/base_import.js +++ b/addons/base_import/static/src/js/base_import.js @@ -176,7 +176,7 @@ var DataImport = Widget.extend(ControlPanelMixin, { ); }, create_model: function() { - return this.rpc('base_import.import', 'create') + return this._rpc('base_import.import', 'create') .args([{res_model: this.res_model}]) .exec(); }, diff --git a/addons/board/static/src/js/dashboard.js b/addons/board/static/src/js/dashboard.js index 273f0f61147..522b7fb19c2 100644 --- a/addons/board/static/src/js/dashboard.js +++ b/addons/board/static/src/js/dashboard.js @@ -56,9 +56,12 @@ var DashBoard = form_common.FormWidget.extend({ delete(action.attrs.colspan); var action_id = _.str.toNumber(action.attrs.name); if (!_.isNaN(action_id)) { - self.rpc('/web/action/load', {action_id: action_id}).done(function(result) { - self.on_load_action(result, column_index + '_' + action_index, action.attrs); - }); + self._rpc('/web/action/load') + .params({action_id: action_id}) + .exec() + .done(function(result) { + self.on_load_action(result, column_index + '_' + action_index, action.attrs); + }); } }); }); @@ -171,10 +174,12 @@ var DashBoard = form_common.FormWidget.extend({ board.columns.push(actions); }); var arch = QWeb.render('DashBoard.xml', board); - this.rpc('/web/view/add_custom', { - view_id: this.view.fields_view.view_id, - arch: arch - }); + this._rpc('/web/view/add_custom') + .params({ + view_id: this.view.fields_view.view_id, + arch: arch + }) + .exec(); }, on_load_action: function(result, index, action_attrs) { var self = this, @@ -416,19 +421,22 @@ FavoriteMenu.include({ c.dashboard_merge_domains_contexts = false; var name = self.$add_dashboard_input.val(); - return self.rpc('/board/add_to_dashboard', { - action_id: self.action_id || false, - context_to_save: c, - domain: domain, - view_mode: self.view_manager.active_view.type, - name: name, - }).then(function (r) { - if (r) { - self.do_notify(_.str.sprintf(_t("'%s' added to dashboard"), name), ''); - } else { - self.do_warn(_t("Could not add filter to dashboard")); - } - }); + return self._rpc('/board/add_to_dashboard') + .params({ + action_id: self.action_id || false, + context_to_save: c, + domain: domain, + view_mode: self.view_manager.active_view.type, + name: name, + }) + .exec() + .then(function (r) { + if (r) { + self.do_notify(_.str.sprintf(_t("'%s' added to dashboard"), name), ''); + } else { + self.do_warn(_t("Could not add filter to dashboard")); + } + }); }, }); diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js index 688aa7c8f1a..d0ed1eade7e 100644 --- a/addons/calendar/static/src/js/base_calendar.js +++ b/addons/calendar/static/src/js/base_calendar.js @@ -22,12 +22,15 @@ var CalendarNotification = Notification.extend({ 'click .link2event': function() { var self = this; - this.rpc("/web/action/load", { - action_id: "calendar.action_calendar_event_notify", - }).then(function(r) { - r.res_id = self.eid; - return self.do_action(r); - }); + this._rpc("/web/action/load") + .params({ + action_id: "calendar.action_calendar_event_notify", + }) + .exec() + .then(function(r) { + r.res_id = self.eid; + return self.do_action(r); + }); }, 'click .link2recall': function() { @@ -36,7 +39,8 @@ var CalendarNotification = Notification.extend({ 'click .link2showed': function() { this.destroy(true); - this.rpc("/calendar/notify_ack"); + this._rpc("/calendar/notify_ack") + .exec(); }, }); }, diff --git a/addons/crm/static/src/js/sales_team_dashboard.js b/addons/crm/static/src/js/sales_team_dashboard.js index 9ab331d70bb..aa2339f2a6e 100644 --- a/addons/crm/static/src/js/sales_team_dashboard.js +++ b/addons/crm/static/src/js/sales_team_dashboard.js @@ -5,7 +5,8 @@ var SalesTeamDashboard = require('sales_team.dashboard'); SalesTeamDashboard.Model.include({ _fetchDashboardData: function() { - return this.rpc('crm.lead', 'retrieve_sales_dashboard').exec(); + return this._rpc('crm.lead', 'retrieve_sales_dashboard') + .exec(); }, }); diff --git a/addons/google_calendar/static/src/js/google_calendar.js b/addons/google_calendar/static/src/js/google_calendar.js index f465b06236e..bbe0f14d098 100644 --- a/addons/google_calendar/static/src/js/google_calendar.js +++ b/addons/google_calendar/static/src/js/google_calendar.js @@ -56,20 +56,23 @@ CalendarRenderer.include({ var text = _.str.sprintf(confirm_text1 + "\n" + confirm_text2 + "\n\n" + confirm_text3, o.info.new_name, o.info.old_name); Dialog.confirm(self, text, { confirm_callback: function() { - self.rpc('/google_calendar/remove_references', { - model: self.state.model, - local_context: context, - }).done(function(o) { - if (o.status === "OK") { - Dialog.alert(self, _t("All events have been disconnected from your previous account. You can now restart the synchronization"), { - title: _t('Event disconnection success'), - }); - } else if (o.status === "KO") { - Dialog.alert(self, _t("An error occured while disconnecting events from your previous account. Please retry or contact your administrator."), { - title: _t('Event disconnection error'), - }); - } // else NOP - }); + self._rpc('/google_calendar/remove_references') + .params({ + model: self.state.model, + local_context: context, + }) + .exec() + .done(function(o) { + if (o.status === "OK") { + Dialog.alert(self, _t("All events have been disconnected from your previous account. You can now restart the synchronization"), { + title: _t('Event disconnection success'), + }); + } else if (o.status === "KO") { + Dialog.alert(self, _t("An error occured while disconnecting events from your previous account. Please retry or contact your administrator."), { + title: _t('Event disconnection error'), + }); + } // else NOP + }); }, title: _t('Accounts'), }); diff --git a/addons/google_drive/static/src/js/gdrive.js b/addons/google_drive/static/src/js/gdrive.js index 170c992f8f8..204d6824bad 100644 --- a/addons/google_drive/static/src/js/gdrive.js +++ b/addons/google_drive/static/src/js/gdrive.js @@ -59,7 +59,7 @@ Sidebar.include({ var self = this; var domain = [['id', '=', doc_item.config_id]]; var fields = ['google_drive_resource_id', 'google_drive_client_id']; - this.rpc('google.drive.config', 'search_read') + this._rpc('google.drive.config', 'search_read') .args([domain, fields]) .exec() .then(function (configs) { diff --git a/addons/hr_attendance/static/src/js/greeting_message.js b/addons/hr_attendance/static/src/js/greeting_message.js index 9eef6691baf..ac27511c3b8 100644 --- a/addons/hr_attendance/static/src/js/greeting_message.js +++ b/addons/hr_attendance/static/src/js/greeting_message.js @@ -131,7 +131,7 @@ var GreetingMessage = Widget.extend(BarcodeHandlerMixin, { if (this.return_to_main_menu) { // in case of multiple scans in the greeting message view, delete the timer, a new one will be created. clearTimeout(this.return_to_main_menu); } - this.rpc('hr.employee', 'attendance_scan') + this._rpc('hr.employee', 'attendance_scan') .args([barcode, ]) .exec() .then(function (result) { diff --git a/addons/hr_attendance/static/src/js/kiosk_confirm.js b/addons/hr_attendance/static/src/js/kiosk_confirm.js index d66e1982989..f8b8581322b 100644 --- a/addons/hr_attendance/static/src/js/kiosk_confirm.js +++ b/addons/hr_attendance/static/src/js/kiosk_confirm.js @@ -12,7 +12,7 @@ var KioskConfirm = Widget.extend({ "click .o_hr_attendance_sign_in_out_icon": function () { var self = this; this.$('.o_hr_attendance_sign_in_out_icon').attr("disabled", "disabled"); - this.rpc('hr.employee', 'attendance_manual') + this._rpc('hr.employee', 'attendance_manual') .args([[this.employee_id], this.next_action]) .exec() .then(function(result) { @@ -38,7 +38,7 @@ var KioskConfirm = Widget.extend({ 'click .o_hr_attendance_pin_pad_button_ok': function() { var self = this; this.$('.o_hr_attendance_pin_pad_button_ok').attr("disabled", "disabled"); - this.rpc('hr.employee', 'attendance_manual') + this._rpc('hr.employee', 'attendance_manual') .args([[this.employee_id], this.next_action, this.$('.o_hr_attendance_PINbox').val()]) .exec() .then(function(result) { diff --git a/addons/hr_attendance/static/src/js/kiosk_mode.js b/addons/hr_attendance/static/src/js/kiosk_mode.js index 24b843028c6..e8b21dd05ac 100644 --- a/addons/hr_attendance/static/src/js/kiosk_mode.js +++ b/addons/hr_attendance/static/src/js/kiosk_mode.js @@ -23,7 +23,7 @@ var KioskMode = Widget.extend(BarcodeHandlerMixin, { start: function () { var self = this; self.session = Session; - this.rpc('res.company', 'search_read') + this._rpc('res.company', 'search_read') .args([[['id', '=', self.session.company_id]], ['name']]) .exec() .then(function (companies){ @@ -37,7 +37,7 @@ var KioskMode = Widget.extend(BarcodeHandlerMixin, { on_barcode_scanned: function(barcode) { var self = this; - this.rpc('hr.employee', 'attendance_scan') + this._rpc('hr.employee', 'attendance_scan') .args([barcode, ]) .exec() .then(function (result) { diff --git a/addons/hr_attendance/static/src/js/my_attendances.js b/addons/hr_attendance/static/src/js/my_attendances.js index f4df4b7306a..1dbcacd8975 100644 --- a/addons/hr_attendance/static/src/js/my_attendances.js +++ b/addons/hr_attendance/static/src/js/my_attendances.js @@ -19,7 +19,7 @@ var MyAttendances = Widget.extend({ start: function () { var self = this; - this.rpc('hr.employee', 'search_read') + this._rpc('hr.employee', 'search_read') .args([[['user_id', '=', self.session.uid]], ['attendance_state', 'name']]) .exec() .then(function (res) { @@ -36,7 +36,7 @@ var MyAttendances = Widget.extend({ update_attendance: function () { var self = this; - this.rpc('hr.employee', 'attendance_manual') + this._rpc('hr.employee', 'attendance_manual') .args([[self.employee.id], 'hr_attendance.hr_attendance_action_my_attendances']) .exec() .then(function(result) { diff --git a/addons/hr_timesheet_sheet/static/src/js/timesheet.js b/addons/hr_timesheet_sheet/static/src/js/timesheet.js index 50d6754e006..5d6235e094f 100644 --- a/addons/hr_timesheet_sheet/static/src/js/timesheet.js +++ b/addons/hr_timesheet_sheet/static/src/js/timesheet.js @@ -57,7 +57,7 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg var commands = this.field_manager.get_field_value("timesheet_ids"); var self = this; - this.rpc(this.view.model, "resolve_2many_commands") + this._rpc(this.view.model, "resolve_2many_commands") .args(["timesheet_ids", commands, []]) .exec() .done(function(result) { @@ -111,7 +111,7 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg var default_get; var self = this; return this.render_drop.add( - this.rpc("account.analytic.line", "default_get") + this._rpc("account.analytic.line", "default_get") .args([['account_id','general_account_id','journal_id','date','name','user_id','product_id','product_uom_id','amount','unit_amount','project_id']]) .withContext({'user_id': self.get('user_id')} ) .exec() @@ -163,7 +163,7 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg }).value(); // we need the name_get of the projects - this.rpc("project.project", "name_get") + this._rpc("project.project", "name_get") .args([_.pluck(projects, "project")]) .exec() .then(function(result) { diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index d1afae2e675..a61aea9a982 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -52,7 +52,7 @@ var AbstractActivityField = AbstractField.extend({ // private _markActivityDone: function (id) { - return this.rpc('mail.activity', 'action_done') + return this._rpc('mail.activity', 'action_done') .args([[id]]) .exec(); }, @@ -61,7 +61,7 @@ var AbstractActivityField = AbstractField.extend({ var missing_ids = _.difference(this.value.res_ids, _.pluck(this.activities, 'id')); var fetch_def; if (missing_ids.length) { - fetch_def = this.rpc('mail.activity', 'read') + fetch_def = this._rpc('mail.activity', 'read') .args([missing_ids]) .exec(); } @@ -168,7 +168,7 @@ var Activity = AbstractActivityField.extend({ _onUnlinkActivity: function (event) { event.preventDefault(); var activity_id = $(event.currentTarget).data('activity-id'); - return this.rpc('mail.activity', 'unlink') + return this._rpc('mail.activity', 'unlink') .args([[activity_id]]) .exec() .then(this._reload.bind(this, {activity: true})); diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index 4a30bac6ca4..9c60851cc22 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -611,9 +611,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { bus.on('notification', null, on_notification); this.channel_seen = _.throttle(function (channel) { - return self.rpc('mail.channel', 'channel_seen') + return self._rpc('mail.channel', 'channel_seen') .args([[channel.id]]) - .exec({shadow: true}); + .exec({options: {shadow: true}}); }, 3000); }, @@ -676,7 +676,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { domain = [['id', '<', min_message_id]].concat(domain); } - return this.rpc('mail.message', 'message_fetch') + return this._rpc('mail.message', 'message_fetch') .args([domain]) .kwargs({limit: LIMIT, context: session.user_context}) .exec() @@ -704,7 +704,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { if (options.force_fetch || _.difference(ids.slice(0, LIMIT), loaded_msg_ids).length) { var ids_to_load = _.difference(ids, loaded_msg_ids).slice(0, LIMIT); - return this.rpc('mail.message', 'message_format') + return this._rpc('mail.message', 'message_format') .args([ids_to_load]) .kwargs({context: session.user_context}) .exec() @@ -743,7 +743,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { } if ('channel_id' in options) { // post a message in a channel or execute a command - return this.rpc('mail.channel', data.command ? 'execute_command' : 'message_post') + return this._rpc('mail.channel', data.command ? 'execute_command' : 'message_post') .args([options.channel_id]) .kwargs(_.extend(msg, { message_type: 'comment', @@ -763,12 +763,12 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { subtype_id: data.subtype_id, }); - return this.rpc(options.model, 'message_post') + return this._rpc(options.model, 'message_post') .args([options.res_id]) .kwargs(msg) .exec() .then(function (msg_id) { - return self.rpc('mail.message', 'message_format') + return self._rpc('mail.message', 'message_format') .args([msg_id]) .exec() .then(function (msgs) { @@ -812,7 +812,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { // get messages for a chatter, when it doesn't know the ids (use // case is when using the full composer) var domain = [['model', '=', options.model], ['res_id', '=', options.res_id]]; - this.rpc('mail.message', 'message_fetch') + this._rpc('mail.message', 'message_fetch') .args([domain]) .kwargs({limit: 30}) .exec() @@ -822,12 +822,12 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { } }, toggle_star_status: function (message_id) { - return this.rpc('mail.message', 'toggle_message_starred') + return this._rpc('mail.message', 'toggle_message_starred') .args([[message_id]]) .exec(); }, unstar_all: function () { - return this.rpc('mail.message', 'unstar_all') + return this._rpc('mail.message', 'unstar_all') .args([[]]) .exec(); }, @@ -838,7 +838,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { return !message || message.is_needaction; }); if (ids.length) { - return this.rpc('mail.message', 'set_message_done') + return this._rpc('mail.message', 'set_message_done') .args([ids]) .exec(); } else { @@ -847,14 +847,14 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { }, mark_all_as_read: function (channel, domain) { if ((channel.id === "channel_inbox" && needaction_counter) || (channel && channel.needaction_counter)) { - return this.rpc('mail.message', 'mark_all_as_read') + return this._rpc('mail.message', 'mark_all_as_read') .kwargs({channel_ids: channel.id !== "channel_inbox" ? [channel.id] : [], domain: domain}) .exec(); } return $.when(); }, undo_mark_as_read: function (message_ids, channel) { - return this.rpc('mail.message', 'mark_as_unread') + return this._rpc('mail.message', 'mark_as_unread') .args([message_ids, [channel.id]]) .exec(); }, @@ -886,9 +886,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { return mention_partner_suggestions; } if (!channel.members_deferred) { - channel.members_deferred = this.rpc('mail.channel', "channel_fetch_listeners") + channel.members_deferred = this._rpc('mail.channel', "channel_fetch_listeners") .args([channel.uuid]) - .exec({shadow: true}) + .exec({options: {shadow: true}}) .then(function (members) { var suggestions = []; _.each(mention_partner_suggestions, function (partners) { @@ -949,9 +949,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { }, detach_channel: function (channel) { - return this.rpc('mail.channel', "channel_minimize") + return this._rpc('mail.channel', "channel_minimize") .args([channel.uuid, true]) - .exec({shadow: true}); + .exec({options: {shadow: true}}); }, remove_chatter_messages: function (model) { messages = _.reject(messages, function (message) { @@ -963,7 +963,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { var method = type === "dm" ? "channel_get" : "channel_create"; var args = type === "dm" ? [[name]] : [name, type]; - return this.rpc('mail.channel', method) + return this._rpc('mail.channel', method) .args(args) .exec() .then(add_channel); @@ -978,7 +978,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { // channel already joined channel_defs[channel_id] = $.when(channel); } else { - channel_defs[channel_id] = this.rpc('mail.channel', 'channel_join_and_get_info') + channel_defs[channel_id] = this._rpc('mail.channel', 'channel_join_and_get_info') .args([[channel_id]]) .exec() .then(function (result) { @@ -988,7 +988,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { return channel_defs[channel_id]; }, open_and_detach_dm: function (partner_id) { - return this.rpc('mail.channel', 'channel_get_and_minimize') + return this._rpc('mail.channel', 'channel_get_and_minimize') .args([[partner_id]]) .exec() .then(add_channel); @@ -999,20 +999,20 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { unsubscribe: function (channel) { if (_.contains(['public', 'private'], channel.type)) { - return this.rpc('mail.channel', 'action_unfollow') + return this._rpc('mail.channel', 'action_unfollow') .args([[channel.id]]) .exec(); } else { - return this.rpc('mail.channel', 'channel_pin') + return this._rpc('mail.channel', 'channel_pin') .args([channel.uuid, false]) .exec(); } }, close_chat_session: function (channel_id) { var channel = this.get_channel(channel_id); - this.rpc('mail.channel', "channel_fold") + this._rpc('mail.channel', "channel_fold") .kwargs({uuid : channel.uuid, state : "closed"}) - .exec({shadow: true}); + .exec({options: {shadow: true}}); }, fold_channel: function (channel_id, folded) { var args = { @@ -1021,9 +1021,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { if (_.isBoolean(folded)) { args.state = folded ? 'folded' : 'open'; } - return this.rpc('mail.channel', "channel_fold") + return this._rpc('mail.channel', "channel_fold") .kwargs(args) - .exec({shadow: true}); + .exec({options: {shadow: true}}); }, /** * Special redirection handling for given model and id @@ -1046,7 +1046,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { }; if (res_model === "res.partner") { var domain = [["partner_id", "=", res_id]]; - this.rpc('res.users', "search") + this._rpc('res.users', "search") .args([domain]) .exec() .then(function (user_ids) { @@ -1057,7 +1057,7 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { } }); } else { - this.rpc(res_model, 'get_formview_id') + this._rpc(res_model, 'get_formview_id') .args([[res_id], session.user_context]) .exec() .then(function (view_id) { @@ -1083,9 +1083,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { if (!channels_preview_def) { if (missing_channels.length) { var missing_channel_ids = _.pluck(missing_channels, 'id'); - channels_preview_def = this.rpc('mail.channel', 'channel_fetch_preview') + channels_preview_def = this._rpc('mail.channel', 'channel_fetch_preview') .args([missing_channel_ids]) - .exec({shadow: true}); + .exec({options: {shadow: true}}); } else { channels_preview_def = $.when(); } @@ -1120,9 +1120,9 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { }); if (!values.length) { // extend the research to all users - def = this.rpc('res.partner', 'im_search') + def = this._rpc('res.partner', 'im_search') .args([search_val, limit || 20]) - .exec({shadow: true}); + .exec({options: {shadow: true}}); } else { def = $.when(values); } diff --git a/addons/mail/static/src/js/chatter.js b/addons/mail/static/src/js/chatter.js index 67f29ab1bbb..a6a04884f76 100644 --- a/addons/mail/static/src/js/chatter.js +++ b/addons/mail/static/src/js/chatter.js @@ -245,7 +245,7 @@ var Chatter = Widget.extend(chat_mixin, { this.suggested_partners_def = $.Deferred(); var method = 'message_get_suggested_recipients'; var args = [[this.context.default_res_id], this.context]; - this.rpc(this.record.model, method) + this._rpc(this.record.model, method) .args(args) .exec() .then(function (result) { diff --git a/addons/mail/static/src/js/chatter_composer.js b/addons/mail/static/src/js/chatter_composer.js index 4e7eb6a14ec..8f64622e209 100644 --- a/addons/mail/static/src/js/chatter_composer.js +++ b/addons/mail/static/src/js/chatter_composer.js @@ -125,7 +125,7 @@ var ChatterComposer = composer.BasicComposer.extend({ var def; if (names_to_find.length > 0) { var args = [[this.context.default_res_id], names_to_find]; - def = this.rpc(this.model, 'message_partner_info_from_emails') + def = this._rpc(this.model, 'message_partner_info_from_emails') .args(args) .exec(); } @@ -173,7 +173,7 @@ var ChatterComposer = composer.BasicComposer.extend({ var def; if (new_names_to_find.length > 0) { var args = [[self.context.default_res_id], new_names_to_find, true]; - self.rpc(self.model, 'message_partner_info_from_emails') + self._rpc(self.model, 'message_partner_info_from_emails') .args(args) .exec(); } diff --git a/addons/mail/static/src/js/client_action.js b/addons/mail/static/src/js/client_action.js index e461161c437..28acb02828d 100644 --- a/addons/mail/static/src/js/client_action.js +++ b/addons/mail/static/src/js/client_action.js @@ -69,7 +69,7 @@ var PartnerInviteDialog = Dialog.extend({ var self = this; var data = this.$input.select2('data'); if(data.length >= 1){ - return this.rpc('mail.channel', 'channel_invite') + return this._rpc('mail.channel', 'channel_invite') .args([this.channel_id]) .kwargs({partner_ids: _.pluck(data, 'id')}) .exec() @@ -381,7 +381,7 @@ var ChatAction = Widget.extend(ControlPanelMixin, { }, do_search_channel: function(search_val){ - return this.rpc('mail.channel', 'channel_search_to_join') + return this._rpc('mail.channel', 'channel_search_to_join') .args([search_val]) .exec() .then(function(result){ diff --git a/addons/mail/static/src/js/composer.js b/addons/mail/static/src/js/composer.js index b8a25cda7e3..0471f6e8a5b 100644 --- a/addons/mail/static/src/js/composer.js +++ b/addons/mail/static/src/js/composer.js @@ -666,7 +666,7 @@ var BasicComposer = Widget.extend(chat_mixin, { var def = $.Deferred(); clearTimeout(this.mention_fetch_timer); this.mention_fetch_timer = setTimeout(function () { - return self.rpc(model, method) + return self._rpc(model, method) .kwargs(kwargs) .exec() .then(function (results) { diff --git a/addons/mail/static/src/js/followers.js b/addons/mail/static/src/js/followers.js index 314e874d7a6..7c4529b203e 100644 --- a/addons/mail/static/src/js/followers.js +++ b/addons/mail/static/src/js/followers.js @@ -195,8 +195,9 @@ var Followers = AbstractField.extend({ var missing_ids = _.difference(this.value.res_ids, _.pluck(this.followers, 'id')); var def; if (missing_ids.length) { - var args = { follower_ids: missing_ids, res_model: this.model }; - def = this.performRPC('/mail/read_followers', args); + def = this._rpc('/mail/read_followers') + .params({ follower_ids: missing_ids, res_model: this.model }) + .exec(); } return $.when(def).then(function (results) { if (results) { @@ -219,7 +220,7 @@ var Followers = AbstractField.extend({ partner_ids: [this.partnerID], context: {}, // FIXME }; - this.rpc(this.model, 'message_subscribe') + this._rpc(this.model, 'message_subscribe') .args([[this.res_id]]) .kwargs(kwargs) .exec() @@ -242,7 +243,7 @@ var Followers = AbstractField.extend({ ids.channel_ids, {}, // FIXME ]; - self.rpc(self.model, 'message_unsubscribe') + self._rpc(self.model, 'message_unsubscribe') .args(args) .exec() .then(self._reload.bind(self)); @@ -286,7 +287,7 @@ var Followers = AbstractField.extend({ var kwargs = _.extend({}, ids); kwargs.subtype_ids = checklist; kwargs.context = {}; // FIXME - this.rpc(this.model, 'message_subscribe') + this._rpc(this.model, 'message_subscribe') .args([[this.res_id]]) .kwargs(kwargs) .exec() @@ -307,32 +308,32 @@ var Followers = AbstractField.extend({ var self = this; var $currentTarget = $(event.currentTarget); var follower_id = $currentTarget.data('follower-id'); // id of model mail_follower - return this.performRPC('/mail/read_subscription_data', { - res_model: this.model, - follower_id: follower_id, - }).then(function (data) { - var res_id = $currentTarget.data('oe-id'); // id of model res_partner or mail_channel - var is_channel = $currentTarget.data('oe-model') === 'mail.channel'; - self.dialog = new Dialog(this, { - size: 'medium', - title: _t('Edit Subscription of ') + $currentTarget.siblings('a').text(), - buttons: [ - { - text: _t("Apply"), - classes: 'btn-primary', - click: function () { - self._updateSubscription(event, res_id, is_channel); + return this._rpc('/mail/read_subscription_data') + .params({res_model: this.model, follower_id: follower_id}) + .exec() + .then(function (data) { + var res_id = $currentTarget.data('oe-id'); // id of model res_partner or mail_channel + var is_channel = $currentTarget.data('oe-model') === 'mail.channel'; + self.dialog = new Dialog(this, { + size: 'medium', + title: _t('Edit Subscription of ') + $currentTarget.siblings('a').text(), + buttons: [ + { + text: _t("Apply"), + classes: 'btn-primary', + click: function () { + self._updateSubscription(event, res_id, is_channel); + }, + close: true }, - close: true - }, - { - text: _t("Cancel"), - close: true, - }, - ], - }).open(); - self._displaySubtypes(data, true, is_channel); - }); + { + text: _t("Cancel"), + close: true, + }, + ], + }).open(); + self._displaySubtypes(data, true, is_channel); + }); }, _onFollowButtonClicked: function () { if (!this.is_follower) { diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js index 0a40a495a3c..6ca9b66e364 100644 --- a/addons/point_of_sale/static/src/js/devices.js +++ b/addons/point_of_sale/static/src/js/devices.js @@ -1,7 +1,6 @@ odoo.define('point_of_sale.devices', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); var mixins = require('web.mixins'); var rpc = require('web.rpc'); @@ -443,7 +442,7 @@ var ProxyDevice = core.Class.extend(mixins.PropertiesMixin,{ print_sale_details: function() { var self = this; rpc.query({model: 'report.point_of_sale.report_saledetails', method: 'get_sale_details'}) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function(result){ var env = { company: self.pos.company, diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 0c1a6f566b5..939c1adc094 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -506,7 +506,7 @@ exports.PosModel = Backbone.Model.extend({ if (method === 'search_read') { query = query.orderBy(order); } - query.exec({callback: ajax.rpc.bind(ajax)}).then(function(result){ + query.exec({type: "ajax"}).then(function(result){ try{ // catching exceptions in model.loaded(...) if (method === 'search_read') { result = result.records; @@ -551,11 +551,10 @@ exports.PosModel = Backbone.Model.extend({ var def = new $.Deferred(); var fields = _.find(this.models,function(model){ return model.model === 'res.partner'; }).fields; var domain = [['customer','=',true],['write_date','>',this.db.get_partner_write_date()]]; - var rpcOptions = {timeout:3000, shadow: true}; rpc.query({model: 'res.partner', method: 'search_read'}) - .args([domain, fields]) - .exec({callback: ajax.rpc.bind(ajax), callbackOptions: rpcOptions}) - .then(function(partners){ + .args([domain, fields]) + .exec({type: "ajax", options: {timeout:3000, shadow: true}}) + .then(function(partners){ if (self.db.add_partners(partners.records)) { // check if the partners we got were real updates def.resolve(); } else { @@ -891,9 +890,9 @@ exports.PosModel = Backbone.Model.extend({ })]; var rpcOptions = {timeout: timeout, shadow: !options.to_invoice}; return rpc.query({model: 'pos.order', method: 'create_from_ui'}) - .args(args) - .exec({callback: ajax.rpc.bind(ajax), callbackOptions: rpcOptions}) - .then(function (server_ids) { + .args(args) + .exec({type: "ajax", options: rpcOptions}) + .then(function (server_ids) { _.each(order_ids_to_sync, function (order_id) { self.db.remove_order(order_id); }); diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index db5e45d93fc..6186eab9717 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -30,7 +30,6 @@ odoo.define('point_of_sale.screens', function (require) { var PosBaseWidget = require('point_of_sale.BaseWidget'); var gui = require('point_of_sale.gui'); var models = require('point_of_sale.models'); -var ajax = require('web.ajax'); var core = require('web.core'); var rpc = require('web.rpc'); var utils = require('web.utils'); @@ -1212,7 +1211,7 @@ var ClientListScreenWidget = ScreenWidget.extend({ rpc.query({model: 'res.partner', method: 'create_from_ui'}) .args([fields]) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function(partner_id){ self.saved_client_details(partner_id); },function(err,event){ diff --git a/addons/pos_cache/static/src/js/pos_cache.js b/addons/pos_cache/static/src/js/pos_cache.js index 1e49b36e4c9..6598ab9a8c2 100644 --- a/addons/pos_cache/static/src/js/pos_cache.js +++ b/addons/pos_cache/static/src/js/pos_cache.js @@ -2,7 +2,6 @@ odoo.define('pos_cache.pos_cache', function (require) { "use strict"; var models = require('point_of_sale.models'); -var ajax = require('web.ajax'); var core = require('web.core'); var rpc = require('web.rpc'); var _t = core._t; @@ -34,7 +33,7 @@ models.PosModel = models.PosModel.extend({ return posmodel_super.load_server_data.apply(this, arguments).then(function () { var records = rpc.query({model: 'pos.config', method: 'get_products_from_cache'}) .args([self.pos_session.config_id[0], product_fields, product_domain]) - .exec({callback: ajax.rpc.bind(ajax)}); + .exec({type: "ajax"}); self.chrome.loading_message(_t('Loading') + ' product.product', 1); return records.then(function (product) { self.db.add_products(product); diff --git a/addons/pos_mercury/static/src/js/pos_mercury.js b/addons/pos_mercury/static/src/js/pos_mercury.js index 8e485bcbf4a..10007b92851 100644 --- a/addons/pos_mercury/static/src/js/pos_mercury.js +++ b/addons/pos_mercury/static/src/js/pos_mercury.js @@ -1,7 +1,6 @@ odoo.define('pos_mercury.pos_mercury', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); var rpc = require('web.rpc'); var screens = require('point_of_sale.screens'); @@ -391,7 +390,7 @@ PaymentScreenWidget.include({ rpc.query({model: 'pos_mercury.mercury_transaction', method: 'do_payment'}) .args([transaction]) - .exec({timeout: self.server_timeout_in_ms, callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax", options: {timeout: self.server_timeout_in_ms}}) .then(function (data) { // if not receiving a response from Mercury, we should retry if (data === "timeout") { @@ -549,7 +548,7 @@ PaymentScreenWidget.include({ rpc.query({model: 'pos_mercury.mercury_transaction', method: rpc_method}) .args([request_data]) - .exec({timeout: self.server_timeout_in_ms, callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax", options: {timeout: self.server_timeout_in_ms}}) .then(function (data) { if (data === "timeout") { self.retry_mercury_transaction(def, null, retry_nr, true, self.do_reversal, [line, is_voidsale, def, retry_nr + 1]); diff --git a/addons/pos_restaurant/static/src/js/floors.js b/addons/pos_restaurant/static/src/js/floors.js index 2a7653148ff..beabc66d898 100644 --- a/addons/pos_restaurant/static/src/js/floors.js +++ b/addons/pos_restaurant/static/src/js/floors.js @@ -6,7 +6,6 @@ var chrome = require('point_of_sale.chrome'); var gui = require('point_of_sale.gui'); var models = require('point_of_sale.models'); var screens = require('point_of_sale.screens'); -var ajax = require('web.ajax'); var core = require('web.core'); var rpc = require('web.rpc'); @@ -250,12 +249,12 @@ var TableWidget = PosBaseWidget.extend({ rpc.query({model: 'restaurant.table', method: 'create_from_ui'}) .args([serializable_table]) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function (table_id){ rpc.query({model: 'restaurant.table', method: 'search_read'}) .args([[['id', '=', table_id]], fields]) .withLimit(1) - .exec({callback: ajax.rpc.bind(this)}) + .exec({type: "ajax"}) .then(function (table){ for (var field in table) { self.table[field] = table[field]; @@ -278,7 +277,7 @@ var TableWidget = PosBaseWidget.extend({ var self = this; rpc.query({model: 'restaurant.table', method: 'create_from_ui'}) .args([{'active':false,'id':this.table.id}]) - .exec(ajax.rpc.bind(rpc)) + .exec({type: "ajax"}) .then(function (table_id){ // Removing all references from the table and the table_widget in in the UI ... for (var i = 0; i < self.pos.floors.length; i++) { @@ -416,7 +415,7 @@ var FloorScreenWidget = screens.ScreenWidget.extend({ this.floor.background_color = background; rpc.query({model: 'restaurant.floor', method: 'write'}) .args([[this.floor.id], {'background_color': background}]) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .fail(function (err, event){ self.gui.show_popup('error',{ 'title':_t('Changes could not be saved'), diff --git a/addons/project/static/src/js/project.js b/addons/project/static/src/js/project.js index 0b2a663cc5c..16191aa02b8 100644 --- a/addons/project/static/src/js/project.js +++ b/addons/project/static/src/js/project.js @@ -22,7 +22,7 @@ KanbanRecord.include({ ev.preventDefault(); var domain = [['res_model', '=', 'project.task'], ['res_id', '=', this.id], ['mimetype', 'ilike', 'image']]; - this.rpc('ir.attachment', 'search_read') + this._rpc('ir.attachment', 'search_read') .withDomain(domain) .withFields(['id', 'name']) .exec() diff --git a/addons/report/static/src/js/qwebactionmanager.js b/addons/report/static/src/js/qwebactionmanager.js index 1d57b8642ea..ded094cb26e 100644 --- a/addons/report/static/src/js/qwebactionmanager.js +++ b/addons/report/static/src/js/qwebactionmanager.js @@ -89,7 +89,7 @@ ActionManager.include({ } else if (action.report_type === 'qweb-pdf') { framework.blockUI(); // Before doing anything, we check the state of wkhtmltopdf on the server. - (wkhtmltopdf_state = wkhtmltopdf_state || this.performRPC('/report/check_wkhtmltopdf')).then(function (state) { + (wkhtmltopdf_state = wkhtmltopdf_state || this._rpc('/report/check_wkhtmltopdf').exec()).then(function (state) { // Display a notification to the user according to wkhtmltopdf's state. if (WKHTMLTOPDF_MESSAGES[state]) { self.do_notify(_t('Report'), WKHTMLTOPDF_MESSAGES[state], true); diff --git a/addons/sale/static/src/js/sale.js b/addons/sale/static/src/js/sale.js index ee43610dfb7..d40607c7c33 100644 --- a/addons/sale/static/src/js/sale.js +++ b/addons/sale/static/src/js/sale.js @@ -24,7 +24,7 @@ KanbanRecord.include({ if (isNaN(value)) { self.do_warn(_t("Wrong value entered!"), _t("Only Integer Value should be valid.")); } else { - self.rpc('crm.team', 'write') + self._rpc('crm.team', 'write') .args([[self.id], { 'invoiced_target': value }]) .exec() .done(function() { diff --git a/addons/sales_team/static/src/js/sales_team_dashboard.js b/addons/sales_team/static/src/js/sales_team_dashboard.js index 72f053497a9..449e568fa68 100644 --- a/addons/sales_team/static/src/js/sales_team_dashboard.js +++ b/addons/sales_team/static/src/js/sales_team_dashboard.js @@ -198,7 +198,7 @@ var SalesTeamDashboardController = KanbanController.extend({ if(isNaN(targetValue)) { this.do_warn(_t("Wrong value entered!"), _t("Only Integer Value should be valid.")); } else { - this.rpc('crm.lead', 'modify_target_sales_dashboard') + this._rpc('crm.lead', 'modify_target_sales_dashboard') .args([targetName, parseInt(targetValue)]) .exec() .then(this.reload.bind(this)); diff --git a/addons/web/static/src/js/apps.js b/addons/web/static/src/js/apps.js index a1f85d6ae31..8e9818f67d6 100644 --- a/addons/web/static/src/js/apps.js +++ b/addons/web/static/src/js/apps.js @@ -40,7 +40,7 @@ var Apps = Widget.extend({ if (apps_client) { return check_client_available(apps_client); } else { - return this.rpc('ir.module.module', 'get_apps_server') + return this._rpc('ir.module.module', 'get_apps_server') .exec() .then(function(u) { var link = $(_.str.sprintf('', u))[0]; @@ -90,7 +90,7 @@ var Apps = Widget.extend({ }); }, 'Model': function(m) { - return this.rpc(m.model, m.method) + return this._rpc(m.model, m.method) .args(m.args) .exec() .then(function(r) { diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js index 8db4fab8094..fdfc33f74f5 100644 --- a/addons/web/static/src/js/chrome/action_manager.js +++ b/addons/web/static/src/js/chrome/action_manager.js @@ -559,11 +559,14 @@ var ActionManager = Widget.extend({ if (warm) { this.null_action(); } - action_loaded = this.rpc('/web/session/get_session_action', {key: state.sa}).then(function(action) { - if (action) { - return self.do_action(action); - } - }); + action_loaded = this._rpc('/web/session/get_session_action') + .params({key: state.sa}) + .exec() + .then(function(action) { + if (action) { + return self.do_action(action); + } + }); } return $.when(action_loaded || null).done(function() { @@ -832,12 +835,15 @@ var ActionManager = Widget.extend({ }, ir_actions_server: function (action, options) { var self = this; - return this.performRPC('/web/action/run', { - action_id: action.id, - context: action.context || {} - }).then(function (action) { - return self.do_action(action, options); - }); + return this._rpc('/web/action/run') + .params({ + action_id: action.id, + context: action.context || {} + }) + .exec() + .then(function (action) { + return self.do_action(action, options); + }); }, ir_actions_report_xml: function(action, options) { var self = this; diff --git a/addons/web/static/src/js/chrome/search_inputs.js b/addons/web/static/src/js/chrome/search_inputs.js index 6855520a39b..41676b98e2e 100644 --- a/addons/web/static/src/js/chrome/search_inputs.js +++ b/addons/web/static/src/js/chrome/search_inputs.js @@ -426,7 +426,7 @@ var ManyToOneField = CharField.extend({ args = []; } } - return this.rpc(this.attrs.relation, 'name_search') + return this._rpc(this.attrs.relation, 'name_search') .kwargs({ name: needle, args: args, @@ -458,7 +458,7 @@ var ManyToOneField = CharField.extend({ } var context = pyeval.eval('contexts', [this.searchview.dataset.get_context()]); - return this.rpc(this.attrs.relation, 'name_get') + return this._rpc(this.attrs.relation, 'name_get') .args([value]) .withContext(context) .exec() diff --git a/addons/web/static/src/js/chrome/sidebar.js b/addons/web/static/src/js/chrome/sidebar.js index b57e94e422c..41e45b6e148 100644 --- a/addons/web/static/src/js/chrome/sidebar.js +++ b/addons/web/static/src/js/chrome/sidebar.js @@ -148,23 +148,26 @@ var Sidebar = Widget.extend({ new Context( sidebar_eval_context, active_ids_context)); - self.rpc("/web/action/load", { - action_id: item.action.id, - context: new Context( - dataset.get_context(), active_ids_context).eval() - }).done(function(result) { - result.context = new Context( - result.context || {}, active_ids_context) - .set_eval_context(c); - result.flags = result.flags || {}; - result.flags.new_window = true; - self.do_action(result, { - on_close: function() { - // reload view - self.getParent().reload(); - }, + self._rpc("/web/action/load") + .params({ + action_id: item.action.id, + context: new Context( + dataset.get_context(), active_ids_context).eval() + }) + .exec() + .done(function(result) { + result.context = new Context( + result.context || {}, active_ids_context) + .set_eval_context(c); + result.flags = result.flags || {}; + result.flags.new_window = true; + self.do_action(result, { + on_close: function() { + // reload view + self.getParent().reload(); + }, + }); }); - }); }); }); }, diff --git a/addons/web/static/src/js/chrome/user_menu.js b/addons/web/static/src/js/chrome/user_menu.js index 8a33260432b..21ecac479b1 100644 --- a/addons/web/static/src/js/chrome/user_menu.js +++ b/addons/web/static/src/js/chrome/user_menu.js @@ -59,12 +59,15 @@ var UserMenu = Widget.extend({ var self = this; this.trigger_up('clear_uncommitted_changes', { callback: function () { - self.performRPC('/web/session/account').then(function (url) { - framework.redirect(url); - }).fail(function (result, ev){ - ev.preventDefault(); - framework.redirect('https://accounts.odoo.com/account'); - }); + self._rpc('/web/session/account') + .exec() + .then(function (url) { + framework.redirect(url); + }) + .fail(function (result, ev){ + ev.preventDefault(); + framework.redirect('https://accounts.odoo.com/account'); + }); }, }); }, @@ -90,12 +93,15 @@ var UserMenu = Widget.extend({ var session = this.getSession(); this.trigger_up('clear_uncommitted_changes', { callback: function () { - self.performRPC("/web/action/load", { - action_id: "base.action_res_users_my", - }).done(function (result) { - result.res_id = session.uid; - self.do_action(result); - }); + self._rpc("/web/action/load") + .params({ + action_id: "base.action_res_users_my", + }) + .exec() + .done(function (result) { + result.res_id = session.uid; + self.do_action(result); + }); }, }); }, diff --git a/addons/web/static/src/js/chrome/web_client.js b/addons/web/static/src/js/chrome/web_client.js index f668676673c..48666e2bd16 100644 --- a/addons/web/static/src/js/chrome/web_client.js +++ b/addons/web/static/src/js/chrome/web_client.js @@ -65,12 +65,12 @@ return AbstractWebClient.extend({ logo_edit: function(ev) { var self = this; ev.preventDefault(); - this.rpc("res.users", "read") + this._rpc("res.users", "read") .args([[session.uid], ["company_id"]]) .exec() .then(function(data) { - self.rpc("/web/action/load") - .kwargs({ action_id: "base.action_res_company_form" }) + self._rpc("/web/action/load") + .params({ action_id: "base.action_res_company_form" }) .exec() .done(function(result) { result.res_id = data[0].company_id[0]; @@ -99,7 +99,7 @@ return AbstractWebClient.extend({ var state = $.bbq.getState(true); if (_.isEmpty(state) || state.action === "login") { self.menu.is_bound.done(function() { - self.rpc("res.users", "read") + self._rpc("res.users", "read") .args([[session.uid], ["action_id"]]) .exec() .done(function(result) { diff --git a/addons/web/static/src/js/core/widget.js b/addons/web/static/src/js/core/widget.js index e47586e9a17..82e8041c98a 100644 --- a/addons/web/static/src/js/core/widget.js +++ b/addons/web/static/src/js/core/widget.js @@ -34,7 +34,7 @@ var ServicesMixin = require('web.ServicesMixin'); * * // if you have some asynchronous operations, it's a good idea to return * // a promise in start() - * var promise = this.rpc(...); + * var promise = this._rpc(...); * return promise; * } * }); diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 17e4e33f20e..ebe853a6a96 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1298,9 +1298,9 @@ var FieldDomain = AbstractField.extend({ // ... then query the model to get the number of matched record if valid var self = this; return def.then(function () { - return self.rpc(self.domainModel, "search_count") + return self._rpc(self.domainModel, "search_count") .args([domain]) - .kwargs({context: self.record.getContext({fieldName: self.name})}) + .withContext(self.record.getContext({fieldName: self.name})) .exec() .then(function (data) { self._isValidForModel = true; diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index e150405e3e3..9451a43eb43 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -197,7 +197,7 @@ var FieldMany2One = AbstractField.extend({ var self = this; var slowCreate = this._searchCreatePopup.bind(this, "form", false, this._createContext(name)); if (this.nodeOptions.quick_create) { - this.rpc(this.field.relation, "name_create") + this._rpc(this.field.relation, "name_create") .args([name]) .kwargs({context: this.record.getContext({fieldName: this.name})}) .exec() @@ -267,7 +267,7 @@ var FieldMany2One = AbstractField.extend({ domain.push(['id', 'not in', blacklisted_ids]); } - this.rpc(this.field.relation, "name_search") + this._rpc(this.field.relation, "name_search") .kwargs({ name: search_val, args: domain, @@ -294,7 +294,7 @@ var FieldMany2One = AbstractField.extend({ values.push({ label: _t("Search More..."), action: function () { - self.rpc(self.field.relation, "name_search") + self._rpc(self.field.relation, "name_search") .kwargs({ name: search_val, args: domain, @@ -385,7 +385,7 @@ var FieldMany2One = AbstractField.extend({ if (this.mode === 'readonly' && !this.nodeOptions.no_open) { event.preventDefault(); event.stopPropagation(); - this.rpc(this.field.relation, 'get_formview_action') + this._rpc(this.field.relation, 'get_formview_action') .args([[this.value.res_id]]) .withContext(this.record.getContext({fieldName: this.name})) .exec() @@ -404,7 +404,7 @@ var FieldMany2One = AbstractField.extend({ } var self = this; var context = this.record.getContext({fieldName: this.name}); - this.rpc(this.field.relation, 'get_formview_id') + this._rpc(this.field.relation, 'get_formview_id') .args([[this.value.res_id]]) .withContext(context) .exec() diff --git a/addons/web/static/src/js/fields/upgrade_fields.js b/addons/web/static/src/js/fields/upgrade_fields.js index bbfd9b5b5d1..a4246983dd1 100644 --- a/addons/web/static/src/js/fields/upgrade_fields.js +++ b/addons/web/static/src/js/fields/upgrade_fields.js @@ -37,9 +37,12 @@ var AbstractFieldUpgrade = { */ _confirmUpgrade: function () { var args = [[["share", "=", false]]]; - return this.performModelRPC('res.users', 'search_count', args).then(function (data) { - framework.redirect("https://www.odoo.com/odoo-enterprise/upgrade?num_users=" + data); - }); + return this._rpc('res.users', 'search_count') + .args(args) + .exec() + .then(function (data) { + framework.redirect("https://www.odoo.com/odoo-enterprise/upgrade?num_users=" + data); + }); }, /** * This function is meant to be overriden to insert the 'Enterprise' label diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index f04cac96400..04c80764e00 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -199,7 +199,7 @@ var BasicModel = AbstractModel.extend({ deleteRecords: function (recordIds, modelName, parentID) { var self = this; var records = _.map(recordIds, function (id) { return self.localData[id]; }); - return this.rpc(modelName, 'unlink') + return this._rpc(modelName, 'unlink') .args([_.pluck(records, 'res_id')]) .withContext(session.user_context) // todo: combine with view context .exec() @@ -235,7 +235,7 @@ var BasicModel = AbstractModel.extend({ duplicateRecord: function (recordID) { var self = this; var record = this.localData[recordID]; - return this.rpc(record.model, 'copy') + return this._rpc(record.model, 'copy') .args([record.data.id]) .withContext(this._getContext(record)) .exec() @@ -450,7 +450,7 @@ var BasicModel = AbstractModel.extend({ var self = this; var fields_key = _.without(params.fieldNames, '__last_update'); - return this.rpc(modelName, 'default_get') + return this._rpc(modelName, 'default_get') .args([fields_key]) .withContext(params.context) .exec() @@ -818,7 +818,7 @@ var BasicModel = AbstractModel.extend({ // in the case of a write, only perform the RPC if there are changes to save if (method === 'create' || Object.keys(changes).length) { var args = method === 'write' ? [[record.data.id], changes] : [changes]; - return self.rpc(record.model, method) + return self._rpc(record.model, method) .args(args) .withContext(session.user_context) // todo: combine with view context .exec() @@ -901,7 +901,7 @@ var BasicModel = AbstractModel.extend({ var resIDs = _.map(recordIDs, function (recordID) { return self.localData[recordID].res_id; }); - return this.rpc(parent.model, 'write') + return this._rpc(parent.model, 'write') .args([resIDs, { active: value }]) .exec() .then(this.reload.bind(this, parentID)); @@ -959,7 +959,7 @@ var BasicModel = AbstractModel.extend({ var def; if (!('display_name' in rel_data)) { var field = record.fields[fieldName]; - def = this.rpc(field.relation, 'name_get') + def = this._rpc(field.relation, 'name_get') .args([data.id]) .withContext(record.context) .exec() @@ -1011,7 +1011,7 @@ var BasicModel = AbstractModel.extend({ fields = fields[0]; } return this.mutex.exec(function () { - return self.rpc(record.model, 'onchange') + return self._rpc(record.model, 'onchange') .args([idList, currentData, fields, onchange_spec, context]) .exec() .then(function (result) { @@ -1161,7 +1161,7 @@ var BasicModel = AbstractModel.extend({ // _changes so this is a very specific case) // this could be optimized by registering the fetched records in the list's _cache // so that if a record is removed and then re-added, it won't be fetched twice - var def = this.rpc(list.model, 'read') + var def = this._rpc(list.model, 'read') .args([_.pluck(data, 'id'), list.fieldNames]) .exec() .then(function (records) { @@ -1257,7 +1257,7 @@ var BasicModel = AbstractModel.extend({ _fetchMany2OneGroup: function (group) { var ids = _.uniq(_.pluck(group, 'res_id')); - return this.rpc(group[0].model, 'name_get') + return this._rpc(group[0].model, 'name_get') .args([ids]) .withContext(group[0].context) .exec() @@ -1281,7 +1281,7 @@ var BasicModel = AbstractModel.extend({ model = many2oneRecord.model; return many2oneRecord.res_id; }); - return this.rpc(model, 'name_get') + return this._rpc(model, 'name_get') .args([ids]) .withContext(list.context) .exec() @@ -1303,7 +1303,7 @@ var BasicModel = AbstractModel.extend({ var self = this; fieldNames = fieldNames || _.uniq(record.fieldNames.concat(['display_name'])); var oldData = record.data; - return this.rpc(record.model, 'read') + return this._rpc(record.model, 'read') .args([[record.res_id], fieldNames]) // .withContext({ bin_size: true }) // FIXME: when editing a subrecord in the partner form view, it tries to write the bin_size on the image field .exec() @@ -1495,7 +1495,7 @@ var BasicModel = AbstractModel.extend({ } // step 2: fetch data from server - return this.rpc(field.relation, 'read') + return this._rpc(field.relation, 'read') .args([ids, _.keys(field.relatedFields)]) .withContext({}) // FIXME .exec() @@ -1817,13 +1817,13 @@ var BasicModel = AbstractModel.extend({ }); var domain = Domain.prototype.stringToArray(field.domain || [], field_values); var fold_field = pyeval.py_eval(attrs.options || '{}').fold_field; - var fetch_status_information = self.rpc(field.relation, 'search_read') + var fetch_status_information = self._rpc(field.relation, 'search_read') .withFields(['id'].concat(fold_field ? [fold_field] : [])) .withDomain(domain) .exec() .then(function (result) { var ids = _.pluck(result.records, 'id'); - return self.rpc(field.relation, 'name_get') + return self._rpc(field.relation, 'name_get') .args([ids]) .withContext(self._getContext(record, {fieldName: name})) .exec() @@ -1841,7 +1841,7 @@ var BasicModel = AbstractModel.extend({ } if (field.__always_reload) { if (record.data[name] instanceof Array) { - defs.push(self.rpc(field.relation, 'name_get') + defs.push(self._rpc(field.relation, 'name_get') .args([record.data[name][0]]) .withContext(self._getContext(record, {fieldName: name})) .exec() @@ -1851,7 +1851,7 @@ var BasicModel = AbstractModel.extend({ } } if (field.__fetch_selection && !self.many2ones[field.relation]) { - var fetchSelection = self.rpc(field.relation, 'name_search') + var fetchSelection = self._rpc(field.relation, 'name_search') .args(['', field.domain]) .exec() .then(function (result) { @@ -1860,7 +1860,7 @@ var BasicModel = AbstractModel.extend({ defs.push(fetchSelection); } if (field.__fetch_many2manys) { - var fetchMany2Manys = self.rpc(field.relation, 'name_search') + var fetchMany2Manys = self._rpc(field.relation, 'name_search') .args(['', field.domain]) .exec() .then(function (result) { @@ -1885,7 +1885,7 @@ var BasicModel = AbstractModel.extend({ _readGroup: function (list) { var self = this; var fields = _.uniq(list.fieldNames.concat(list.groupedBy)); - return this.rpc(list.model, 'read_group') + return this._rpc(list.model, 'read_group') .withFields(fields) .withContext(list.context) .groupBy(list.groupedBy) @@ -1969,7 +1969,7 @@ var BasicModel = AbstractModel.extend({ } } if (missingIds.length) { - def = this.rpc(list.model, 'read') + def = this._rpc(list.model, 'read') .args([missingIds, list.fieldNames]) .withContext({}) // FIXME .exec(); @@ -2029,7 +2029,7 @@ var BasicModel = AbstractModel.extend({ */ _searchReadUngroupedList: function (list) { var self = this; - return this.rpc(list.model, 'search_read') + return this._rpc(list.model, 'search_read') .withFields(list.fieldNames) .withDomain(list.domain || []) .withLimit(list.limit) diff --git a/addons/web/static/src/js/views/calendar/calendar_controller.js b/addons/web/static/src/js/views/calendar/calendar_controller.js index 5f1b37a4a32..4e0ace6926b 100644 --- a/addons/web/static/src/js/views/calendar/calendar_controller.js +++ b/addons/web/static/src/js/views/calendar/calendar_controller.js @@ -103,7 +103,9 @@ var CalendarController = AbstractController.extend({ _updateRecord: function (record) { // Cannot modify actual name yet var data = _.omit(this.model.calendarEventToRecord(record), 'name'); - this.performModelRPC(this.model.modelName, 'write', [record.id, data]) + this._rpc(this.model.modelName, 'write') + .args([record.id, data]) + .exec() .then(this.reload.bind(this)); }, @@ -229,7 +231,9 @@ var CalendarController = AbstractController.extend({ click: function () { Dialog.confirm(this, _t("Are you sure you want to delete this record ?"), { confirm_callback: function () { - self.performModelRPC(self.modelName, 'unlink', [id]) + self._rpc(self.modelName, 'unlink') + .args([id]) + .exec() .then(function () { self.dialog.destroy(); self.reload(); diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index 1d25fbb839f..6617854e9ad 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -127,9 +127,10 @@ return AbstractModel.extend({ * @returns */ deleteRecords: function (ids, model) { - return this.performModelRPC(model, 'unlink', [ids], { - context: session.user_context, // todo: combine with view context - }); + return this._rpc(model, 'unlink') + .args([ids]) + .withContext(session.user_context) // todo: combine with view context + .exec(); }, /** * @override @@ -166,8 +167,8 @@ return AbstractModel.extend({ if (!this.preload_def) { this.preload_def = $.Deferred(); $.when( - this.performModelRPC(this.modelName, 'check_access_rights', ["write", false]), - this.performModelRPC(this.modelName, 'check_access_rights', ["create", false])) + this._rpc(this.modelName, 'check_access_rights').args(["write", false]).exec(), + this._rpc(this.modelName, 'check_access_rights').args(["create", false]).exec()) .then(function (write, create) { self.write_right = write; self.create_right = create; @@ -362,18 +363,18 @@ return AbstractModel.extend({ var defs = _.map(this.data.filters, this._loadFilter.bind(this)); return $.when.apply($, defs).then(function () { - return self.performRPC('/web/dataset/search_read', { - model: self.modelName, - context: self.data.context, - domain: self.data.domain.concat(self._getRangeDomain()).concat(self._getFilterDomain()), - fields: self.fieldNames, - }).then(function (events) { - self.data.data = _.map(events.records, self._recordToCalendarEvent.bind(self)); - return $.when( - self._loadColors(self.data, self.data.data), - self._loadRecordsToFilters(self.data, self.data.data) - ); - }); + return self._rpc(self.modelName, 'search_read') + .withContext(self.data.context) + .withFields(self.fieldNames) + .withDomain(self.data.domain.concat(self._getRangeDomain()).concat(self._getFilterDomain())) + .exec() + .then(function (events) { + self.data.data = _.map(events.records, self._recordToCalendarEvent.bind(self)); + return $.when( + self._loadColors(self.data, self.data.data), + self._loadRecordsToFilters(self.data, self.data.data) + ); + }); }); }, /** @@ -402,54 +403,54 @@ return AbstractModel.extend({ } var field = this.fields[filter.fieldName]; - return this.performRPC('/web/dataset/search_read', { - model: filter.write_model, - domain: [["user_id", "=", session.uid]], - fields: [filter.write_field] - }).then(function (res) { - var records = _.map(res.records, function (record) { - var _value = record[filter.write_field]; - var value = _.isArray(_value) ? _value[0] : _value; - var f = _.find(filter.filters, function (f) {return f.value === value;}); - var formater = field_utils.format[_.contains(['many2many', 'one2many'], field.type) ? 'many2one' : field.type]; - return { - 'id': record.id, - 'value': value, - 'label': formater(_value, field), - 'active': !f || f.active, - }; - }); - records.sort(function (f1,f2) { - return _.string.naturalCmp(f2.label, f1.label); - }); - - // add my profile - if (field.relation === 'res.partner' || field.relation === 'res.users') { - var value = field.relation === 'res.partner' ? session.partner_id : session.uid; - var me = _.find(records, function (record) { - return record.value === value; - }); - if (me) { - records.splice(records.indexOf(me), 1); - } else { + return this._rpc(filter.write_model, 'search_read') + .withDomain([["user_id", "=", session.uid]]) + .withFields([filter.write_field]) + .exec() + .then(function (res) { + var records = _.map(res.records, function (record) { + var _value = record[filter.write_field]; + var value = _.isArray(_value) ? _value[0] : _value; var f = _.find(filter.filters, function (f) {return f.value === value;}); - me = { + var formater = field_utils.format[_.contains(['many2many', 'one2many'], field.type) ? 'many2one' : field.type]; + return { + 'id': record.id, 'value': value, - 'label': session.name + _t(" [Me]"), + 'label': formater(_value, field), 'active': !f || f.active, }; - } - records.unshift(me); - } - // add all selection - records.push({ - 'value': 'all', - 'label': field.relation === 'res.partner' || field.relation === 'res.users' ? _t("Everybody's calendars") : _t("Everything"), - 'active': filter.all, - }); + }); + records.sort(function (f1,f2) { + return _.string.naturalCmp(f2.label, f1.label); + }); - filter.filters = records; - }); + // add my profile + if (field.relation === 'res.partner' || field.relation === 'res.users') { + var value = field.relation === 'res.partner' ? session.partner_id : session.uid; + var me = _.find(records, function (record) { + return record.value === value; + }); + if (me) { + records.splice(records.indexOf(me), 1); + } else { + var f = _.find(filter.filters, function (f) {return f.value === value;}); + me = { + 'value': value, + 'label': session.name + _t(" [Me]"), + 'active': !f || f.active, + }; + } + records.unshift(me); + } + // add all selection + records.push({ + 'value': 'all', + 'label': field.relation === 'res.partner' || field.relation === 'res.users' ? _t("Everybody's calendars") : _t("Everything"), + 'active': filter.all, + }); + + filter.filters = records; + }); }, /** * @param {any} element @@ -509,9 +510,12 @@ return AbstractModel.extend({ var defs = []; _.each(to_read, function (ids, model) { - defs.push(self.performModelRPC(model, 'name_get', [_.uniq(ids)]).then(function (res) { - to_read[model] = _.object(res); - })); + defs.push(self._rpc(model, 'name_get') + .args([_.uniq(ids)]) + .exec() + .then(function (res) { + to_read[model] = _.object(res); + })); }); return $.when.apply($, defs).then(function () { _.each(self.data.filters, function (filter) { diff --git a/addons/web/static/src/js/views/calendar/calendar_quick_create.js b/addons/web/static/src/js/views/calendar/calendar_quick_create.js index 326c36ea9eb..008f2d74e04 100644 --- a/addons/web/static/src/js/views/calendar/calendar_quick_create.js +++ b/addons/web/static/src/js/views/calendar/calendar_quick_create.js @@ -122,8 +122,10 @@ var QuickCreate = Dialog.extend({ */ _quickCreate: function (data, options) { var self = this; - return this.performModelRPC(this.modelName, 'create', - [$.extend({}, this.data_template, data)], _.pick(options, 'context')) + return this._rpc(this.modelName, 'create') + .args([$.extend({}, this.data_template, data)]) + .withContext(_.pick(options, 'context')) + .exec() .then(function (id) { self.trigger('added', id); self.$input.val(""); diff --git a/addons/web/static/src/js/views/calendar/calendar_renderer.js b/addons/web/static/src/js/views/calendar/calendar_renderer.js index adea44e8f96..9095e5c13f7 100644 --- a/addons/web/static/src/js/views/calendar/calendar_renderer.js +++ b/addons/web/static/src/js/views/calendar/calendar_renderer.js @@ -92,7 +92,9 @@ var SidebarFilter = Widget.extend(FieldManagerMixin, { var self = this; event.stopPropagation(); var value = event.data.changes[this.write_field].id; - this.model.performModelRPC(this.write_model, 'create', [{'user_id': session.uid,'partner_id': value,}]) + this._rpc(this.write_model, 'create') + .args([{'user_id': session.uid,'partner_id': value,}]) + .exec() .then(function () { self.trigger_up('changeFilter', { 'fieldName': self.fieldName, @@ -117,7 +119,9 @@ var SidebarFilter = Widget.extend(FieldManagerMixin, { var $filter = $(e.currentTarget).closest('.o_calendar_filter_item'); Dialog.confirm(this, _t("Do you really want to delete this filter from favorites ?"), { confirm_callback: function () { - self.performModelRPC(self.write_model, 'unlink', [[$filter.data('id')]]) + self._rpc(self.write_model, 'unlink') + .args([[$filter.data('id')]]) + .exec() .then(function () { self.trigger_up('changeFilter', { 'fieldName': self.fieldName, diff --git a/addons/web/static/src/js/views/graph/graph_model.js b/addons/web/static/src/js/views/graph/graph_model.js index 73578f5c3bc..7bf9757a255 100644 --- a/addons/web/static/src/js/views/graph/graph_model.js +++ b/addons/web/static/src/js/views/graph/graph_model.js @@ -130,13 +130,14 @@ return AbstractModel.extend({ if (this.chart.measure !== '__count__') { fields = fields.concat(this.chart.measure); } - return this.performModelRPC(this.modelName, 'read_group', [], { - context: this.chart.context, - domain: this.chart.domain, - fields: fields, - groupby: this.chart.groupedBy, - lazy: false, - }).then(this._processData.bind(this)); + return this._rpc(this.modelName, 'read_group') + .withContext(this.chart.context) + .withDomain(this.chart.domain) + .withFields(fields) + .groupBy(this.chart.groupedBy) + .lazy(false) + .exec() + .then(this._processData.bind(this)); }, /** * Since read_group is insane and returns its result on different keys diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index c51090e1e12..0c7a7f5ee8b 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -302,7 +302,7 @@ var KanbanController = BasicController.extend({ } data.context['default_' + data.groupedBy[0]] = column.id; - this.rpc(data.model, "name_create") + this._rpc(data.model, "name_create") .args([event.data.value]) .withContext(data.context) .exec() diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js index 1448ea35ca7..780039edacc 100644 --- a/addons/web/static/src/js/views/kanban/kanban_model.js +++ b/addons/web/static/src/js/views/kanban/kanban_model.js @@ -77,11 +77,9 @@ return BasicModel.extend({ var data = self.localData[parent_id]; var def; if (data.fields.sequence) { - def = this.performRPC('/web/dataset/resequence', { - model: modelName, - ids: res_ids, - // fixme: correctly handle context - }); + def = this._rpc('/web/dataset/resequence') + .params({model: modelName, ids: res_ids}) + .exec(); } return $.when(def).then(function () { data.data = _.sortBy(data.data, function (d) { @@ -98,7 +96,7 @@ return BasicModel.extend({ if (!groupByField || groupByField.type !== 'many2one') { return $.Deferred().reject(); // only supported when grouped on m2o } - return this.rpc(groupByField.relation, 'name_create') + return this._rpc(groupByField.relation, 'name_create') .args([name]) .withContext(parent.context) // todo: combine with view context .exec() diff --git a/addons/web/static/src/js/views/pivot/pivot_model.js b/addons/web/static/src/js/views/pivot/pivot_model.js index 8683a6adbce..f1998e01e1a 100644 --- a/addons/web/static/src/js/views/pivot/pivot_model.js +++ b/addons/web/static/src/js/views/pivot/pivot_model.js @@ -82,7 +82,7 @@ var PivotModel = AbstractModel.extend({ } return $.when.apply(null, groupbys.map(function (groupBy) { - return self.rpc(self.modelName, 'read_group') + return self._rpc(self.modelName, 'read_group') .withContext(self.data.context) .withDomain(header.domain.length ? header.domain : self.data.domain) .withFields(_.map(fields, function (field) { return field.split(':')[0]; })) @@ -513,7 +513,7 @@ var PivotModel = AbstractModel.extend({ } return $.when.apply(null, groupBys.map(function (groupBy) { - return self.rpc(self.modelName, 'read_group') + return self._rpc(self.modelName, 'read_group') .withContext(self.data.context) .withDomain(self.data.domain) .withFields(_.map(fields, function (field) { return field.split(':')[0]; })) diff --git a/addons/web/static/src/js/widgets/change_password.js b/addons/web/static/src/js/widgets/change_password.js index 56f9603a310..c1c9c4dddea 100644 --- a/addons/web/static/src/js/widgets/change_password.js +++ b/addons/web/static/src/js/widgets/change_password.js @@ -31,15 +31,18 @@ var ChangePassword = Widget.extend({ self.$el.parents('.modal').modal('hide'); }); $button.eq(0).click(function () { - self.performRPC('/web/session/change_password', { - fields: $('form[name=change_password_form]').serializeArray(), - }).done(function (result) { - if (result.error) { - self._display_error(result); - } else { - self.do_action('logout'); - } - }); + self._rpc('/web/session/change_password') + .params({ + fields: $('form[name=change_password_form]').serializeArray() + }) + .exec() + .done(function (result) { + if (result.error) { + self._display_error(result); + } else { + self.do_action('logout'); + } + }); }); }, diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index b4ae2023684..dbe4c4d3d3c 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -218,29 +218,32 @@ var DataExport = Dialog.extend({ this.$fields_list = this.$('.o_fields_list'); this.$import_compat_radios = this.$('.o_import_compat input'); - waitFor.push(this.rpc('/web/export/formats', {}).then(do_setup_export_formats)); + waitFor.push(this._rpc('/web/export/formats').exec().then(do_setup_export_formats)); var got_fields = new $.Deferred(); this.$import_compat_radios.change(function(e) { self.$('.o_field_tree_structure').remove(); - self.rpc("/web/export/get_fields", { - model: self.dataset.model, - import_compat: !!$(e.target).val(), - }).done(function (records) { - var compatible_fields = _.map(records, function (record) {return record.id}); - self.$fields_list - .find('option') - .filter(function () { - var option_field = $(this).attr('value'); - if (compatible_fields.indexOf(option_field) === -1) { - return true; - } - }) - .remove(); - got_fields.resolve(); - self.on_show_data(records); - }); + self._rpc("/web/export/get_fields") + .params({ + model: self.dataset.model, + import_compat: !!$(e.target).val(), + }) + .exec() + .done(function (records) { + var compatible_fields = _.map(records, function (record) {return record.id}); + self.$fields_list + .find('option') + .filter(function () { + var option_field = $(this).attr('value'); + if (compatible_fields.indexOf(option_field) === -1) { + return true; + } + }) + .remove(); + got_fields.resolve(); + self.on_show_data(records); + }); }).eq(0).change(); waitFor.push(got_fields); @@ -296,10 +299,13 @@ var DataExport = Dialog.extend({ self.$fields_list.empty(); var export_id = self.$('.o_exported_lists_select option:selected').val(); if(export_id) { - self.rpc('/web/export/namelist', { - model: self.dataset.model, - export_id: parseInt(export_id, 10), - }).then(do_load_export_field); + self._rpc('/web/export/namelist') + .params({ + model: self.dataset.model, + export_id: parseInt(export_id, 10), + }) + .exec() + .then(do_load_export_field); } }); self.$('.o_delete_exported_list').click(function() { @@ -341,17 +347,20 @@ var DataExport = Dialog.extend({ if(!record.loaded) { var self = this; - this.rpc("/web/export/get_fields", { - model: model, - prefix: prefix, - parent_name: name, - import_compat: !!this.$import_compat_radios.filter(':checked').val(), - parent_field_type : record['field_type'], - exclude: exclude_fields - }).done(function(results) { - record.loaded = true; - self.on_show_data(results, record.id); - }); + this._rpc("/web/export/get_fields") + .params({ + model: model, + prefix: prefix, + parent_name: name, + import_compat: !!this.$import_compat_radios.filter(':checked').val(), + parent_field_type : record['field_type'], + exclude: exclude_fields + }) + .exec() + .done(function(results) { + record.loaded = true; + self.on_show_data(results, record.id); + }); } else { this.show_content(record.id); } diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js index 59becd8faea..697572257f8 100644 --- a/addons/web/static/src/js/widgets/debug_manager.js +++ b/addons/web/static/src/js/widgets/debug_manager.js @@ -63,9 +63,13 @@ var DebugManager = Widget.extend({ // whether the current user is an administrator this._is_admin = session.is_system; return $.when( - this.performModelRPC('res.users', 'check_access_rights', {operation: 'write', raise_exception: false}), + this._rpc('res.users', 'check_access_rights') + .kwargs({operation: 'write', raise_exception: false}) + .exec(), session.user_has_group('base.group_no_one'), - this.performModelRPC('ir.model.data', 'xmlid_to_res_id', {xmlid: 'base.group_no_one'}), + this._rpc('ir.model.data', 'xmlid_to_res_id') + .kwargs({xmlid: 'base.group_no_one'}) + .exec(), this._super() ).then(function (can_write_user, has_group_no_one, group_no_one_id) { this._features_group = can_write_user && group_no_one_id; @@ -161,7 +165,12 @@ var DebugManager = Widget.extend({ title: _t('Select a view'), disable_multiple_selection: true, on_selected: function (element_ids) { - self.performModelRPC('ir.ui.view', [[['id', '=', element_ids[0]]], ['name', 'model', 'type']], {limit: 1}).then(function (view) { + self._rpc('ir.ui.view', 'search_read') + .withDomain([['id', '=', element_ids[0]]]) + .withFields(['name', 'model', 'type']) + .withLimit(1) + .exec() + .then(function (view) { self.do_action({ type: 'ir.actions.act_window', name: view.name, @@ -219,16 +228,19 @@ DebugManager.include({ get_view_fields: function () { var self = this; var model = this._action.res_model; - this.performModelRPC(model, 'fields_get', [], { - attributes: ['string', 'searchable', 'required', 'readonly', 'type', 'store', 'sortable', 'relation', 'help'] - }).done(function (fields) { - new Dialog(self, { - title: _.str.sprintf(_t("Fields of %s"), model), - $content: $(QWeb.render('WebClient.DebugManager.Action.Fields', { - fields: fields - })) - }).open(); - }); + this._rpc(model, 'fields_get') + .kwargs({ + attributes: ['string', 'searchable', 'required', 'readonly', 'type', 'store', 'sortable', 'relation', 'help'] + }) + .exec() + .done(function (fields) { + new Dialog(self, { + title: _.str.sprintf(_t("Fields of %s"), model), + $content: $(QWeb.render('WebClient.DebugManager.Action.Fields', { + fields: fields + })) + }).open(); + }); }, manage_filters: function () { this.do_action({ @@ -254,8 +266,10 @@ DebugManager.include({ }); }, translate: function() { - var model = this._action.res_model; - this.performModelRPC("ir.translation", 'get_technical_translations', [model]).then(this.do_action); + this._rpc("ir.translation", 'get_technical_translations') + .args([this._action.res_model]) + .exec() + .then(this.do_action); } }); @@ -269,10 +283,12 @@ DebugManager.include({ this._can_edit_views = false; return $.when( this._super(), - this.performModelRPC('ir.ui.view', 'check_access_rights', {operation: 'write', raise_exception: false}) - .then(function (ar) { - this._can_edit_views = ar; - }.bind(this)) + this._rpc('ir.ui.view', 'check_access_rights') + .kwargs({operation: 'write', raise_exception: false}) + .exec() + .then(function (ar) { + this._can_edit_views = ar; + }.bind(this)) ); }, update: function (tag, descriptor, widget) { diff --git a/addons/web/static/src/js/widgets/model_field_selector.js b/addons/web/static/src/js/widgets/model_field_selector.js index a1fb3cc5c4b..41433253499 100644 --- a/addons/web/static/src/js/widgets/model_field_selector.js +++ b/addons/web/static/src/js/widgets/model_field_selector.js @@ -317,7 +317,7 @@ var ModelFieldSelector = Widget.extend({ _getModelFieldsFromCache: function (model, filters) { var def = modelFieldsCache.cacheDefs[model]; if (!def) { - def = modelFieldsCache.cacheDefs[model] = this.rpc(model, "fields_get") + def = modelFieldsCache.cacheDefs[model] = this._rpc(model, "fields_get") .args([ false, ["store", "searchable", "type", "string", "relation", "selection", "related"]]) diff --git a/addons/web/static/src/js/widgets/switch_company_menu.js b/addons/web/static/src/js/widgets/switch_company_menu.js index feaf487fcc7..1f5f0733938 100644 --- a/addons/web/static/src/js/widgets/switch_company_menu.js +++ b/addons/web/static/src/js/widgets/switch_company_menu.js @@ -18,7 +18,7 @@ var SwitchCompanyMenu = Widget.extend({ this.$el.on('click', '.dropdown-menu li a[data-menu]', _.debounce(function(ev) { ev.preventDefault(); var company_id = $(ev.currentTarget).data('company-id'); - self.rpc('res.users', 'write') + self._rpc('res.users', 'write') .args([[session.uid], {'company_id': company_id}]) .exec() .then(function() { diff --git a/addons/web/static/test/helpers/test_utils.js b/addons/web/static/test/helpers/test_utils.js index 124ccfb462f..5f08ff67fe3 100644 --- a/addons/web/static/test/helpers/test_utils.js +++ b/addons/web/static/test/helpers/test_utils.js @@ -138,7 +138,7 @@ function createAsyncView(params) { var src = $(this).attr('src'); if (src[0] !== '#') { $(this).attr('src', '#test:' + $(this).attr('src')); - widget.performRPC(src); + widget._rpc(src).exec(); } }); } diff --git a/addons/web_diagram/static/src/js/diagram_controller.js b/addons/web_diagram/static/src/js/diagram_controller.js index e22f7ad99ac..e9ded7bb1ff 100644 --- a/addons/web_diagram/static/src/js/diagram_controller.js +++ b/addons/web_diagram/static/src/js/diagram_controller.js @@ -172,7 +172,7 @@ var DiagramController = AbstractController.extend({ Dialog.confirm(this, (_t("Are you sure you want to remove this transition?")), { confirm_callback: function () { var state = self.model.get(); - self.rpc(state.connector_model, 'unlink') + self._rpc(state.connector_model, 'unlink') .args([event.data.id]) .exec() .then(self.reload.bind(self)); @@ -191,7 +191,7 @@ var DiagramController = AbstractController.extend({ Dialog.confirm(this, (msg), { confirm_callback: function () { var state = self.model.get(); - self.rpc(state.node_model, 'unlink') + self._rpc(state.node_model, 'unlink') .args([event.data.id]) .exec() .then(self.reload.bind(self)); diff --git a/addons/web_diagram/static/src/js/diagram_model.js b/addons/web_diagram/static/src/js/diagram_model.js index 16d65d67519..4e84c162a79 100644 --- a/addons/web_diagram/static/src/js/diagram_model.js +++ b/addons/web_diagram/static/src/js/diagram_model.js @@ -62,25 +62,28 @@ var DiagramModel = AbstractModel.extend({ */ _fetchDiagramInfo: function () { var self = this; - return this.performRPC('/web_diagram/diagram/get_diagram_info', { - id: this.res_id, - model: this.modelName, - node: this.node_model, - connector: this.connector_model, - src_node: this.connectors.attrs.source, - des_node: this.connectors.attrs.destination, - label: this.connectors.attrs.label || false, - bgcolor: this.nodes.attrs.bgcolor, - shape: this.nodes.attrs.shape, - visible_nodes: this.visible_nodes, - invisible_nodes: this.invisible_nodes, - node_fields_string: this.node_fields_string, - connector_fields_string: this.connector_fields_string, - }).then(function (data) { - self.datanodes = data.nodes; - self.edges = data.conn; - self.parent_field = data.parent_field; - }); + return this._rpc('/web_diagram/diagram/get_diagram_info') + .params({ + id: this.res_id, + model: this.modelName, + node: this.node_model, + connector: this.connector_model, + src_node: this.connectors.attrs.source, + des_node: this.connectors.attrs.destination, + label: this.connectors.attrs.label || false, + bgcolor: this.nodes.attrs.bgcolor, + shape: this.nodes.attrs.shape, + visible_nodes: this.visible_nodes, + invisible_nodes: this.invisible_nodes, + node_fields_string: this.node_fields_string, + connector_fields_string: this.connector_fields_string, + }) + .exec() + .then(function (data) { + self.datanodes = data.nodes; + self.edges = data.conn; + self.parent_field = data.parent_field; + }); }, }); diff --git a/addons/web_planner/static/src/js/web_planner_backend.js b/addons/web_planner/static/src/js/web_planner_backend.js index 980cd9cb134..8245eef9182 100644 --- a/addons/web_planner/static/src/js/web_planner_backend.js +++ b/addons/web_planner/static/src/js/web_planner_backend.js @@ -13,7 +13,7 @@ var PlannerLauncher = planner.PlannerLauncher.extend({ }, _fetch_planner_data: function () { var planner_by_menu = this.planner_by_menu = {}; - return this.rpc('web.planner', 'search_read') + return this._rpc('web.planner', 'search_read') .exec() .then(function (res) { _.each(res.records, function (planner) { diff --git a/addons/web_planner/static/src/js/web_planner_common.js b/addons/web_planner/static/src/js/web_planner_common.js index b3b17c5c1cc..64f13232de7 100644 --- a/addons/web_planner/static/src/js/web_planner_common.js +++ b/addons/web_planner/static/src/js/web_planner_common.js @@ -1,7 +1,6 @@ odoo.define('web.planner.common', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); var Dialog = require('web.Dialog'); var dom = require('web.dom'); @@ -71,7 +70,7 @@ var PlannerDialog = Dialog.extend({ var def = rpc.query({model: 'web.planner', method: 'render'}) .args([this.planner.view_id[0], this.planner.planner_application]) .withContext(session.user_context) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then((function (template) { this.$template = $(template); }).bind(this)); @@ -355,7 +354,7 @@ var PlannerDialog = Dialog.extend({ _save_planner_data: function() { return rpc.query({model: 'web.planner', method: 'write'}) .args([this.planner.id, {'data': JSON.stringify(this.planner.data), 'progress': this.planner.progress}]) - .exec({callback: ajax.rpc.bind(ajax)}); + .exec({type: "ajax"}); }, show_enterprise: function () { var buttons = [{ @@ -365,7 +364,7 @@ var PlannerDialog = Dialog.extend({ click: function () { rpc.query({model: "res.users", method: "search_count"}) .args([[["share", "=", false]]]) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function (data) { window.location = "https://www.odoo.com/odoo-enterprise/upgrade?utm_medium=community_upgrade&num_users=" + data; }); diff --git a/addons/web_settings_dashboard/static/src/js/dashboard.js b/addons/web_settings_dashboard/static/src/js/dashboard.js index 2433a0255bd..e94ff9bc976 100644 --- a/addons/web_settings_dashboard/static/src/js/dashboard.js +++ b/addons/web_settings_dashboard/static/src/js/dashboard.js @@ -25,21 +25,23 @@ var Dashboard = Widget.extend({ load: function(dashboards){ var self = this; var loading_done = new $.Deferred(); - this.performRPC("/web_settings_dashboard/data", {}).then(function (data) { - // Load each dashboard - var all_dashboards_defs = []; - _.each(dashboards, function(dashboard) { - var dashboard_def = self['load_' + dashboard](data); - if (dashboard_def) { - all_dashboards_defs.push(dashboard_def); - } - }); + this._rpc("/web_settings_dashboard/data") + .exec() + .then(function (data) { + // Load each dashboard + var all_dashboards_defs = []; + _.each(dashboards, function(dashboard) { + var dashboard_def = self['load_' + dashboard](data); + if (dashboard_def) { + all_dashboards_defs.push(dashboard_def); + } + }); - // Resolve loading_done when all dashboards defs are resolved - $.when.apply($, all_dashboards_defs).then(function() { - loading_done.resolve(); + // Resolve loading_done when all dashboards defs are resolved + $.when.apply($, all_dashboards_defs).then(function() { + loading_done.resolve(); + }); }); - }); return loading_done; }, @@ -88,7 +90,7 @@ var DashboardInvitations = Widget.extend({ $target.prop('disabled', true); $target.find('i.fa-cog').removeClass('hidden'); // Try to create user accountst - this.rpc("res.users", "web_dashboard_create_users") + this._rpc("res.users", "web_dashboard_create_users") .args([user_emails]) .exec() .then(function() { @@ -165,7 +167,7 @@ var DashboardPlanner = Widget.extend({ willStart: function () { var self = this; - return this.rpc('web.planner', 'search_read') + return this._rpc('web.planner', 'search_read') .exec() .then(function(res) { self.planners = res.records; diff --git a/addons/web_tour/static/src/js/debug_manager.js b/addons/web_tour/static/src/js/debug_manager.js index 484f21b07e2..3a4726a4b1f 100644 --- a/addons/web_tour/static/src/js/debug_manager.js +++ b/addons/web_tour/static/src/js/debug_manager.js @@ -19,7 +19,7 @@ DebugManager.include({ consume_tours: function () { var active_tours = get_active_tours(); if (active_tours.length > 0) { // tours might have been consumed meanwhile - this.rpc('web_tour.tour', 'consume') + this._rpc('web_tour.tour', 'consume') .args([active_tours]) .exec() .then(function () { diff --git a/addons/web_tour/static/src/js/tour_manager.js b/addons/web_tour/static/src/js/tour_manager.js index 5f84ae888d2..8ab70b29818 100644 --- a/addons/web_tour/static/src/js/tour_manager.js +++ b/addons/web_tour/static/src/js/tour_manager.js @@ -451,7 +451,7 @@ return core.Class.extend(mixins.EventDispatcherMixin, ServicesMixin, { this._log = []; } else { var self = this; - this.rpc('web_tour.tour', 'consume') + this._rpc('web_tour.tour', 'consume') .args([[tour_name]]) .exec() .then(function () { diff --git a/addons/web_tour/static/src/js/tour_service.js b/addons/web_tour/static/src/js/tour_service.js index 4778cd9cc70..a89655e6416 100644 --- a/addons/web_tour/static/src/js/tour_service.js +++ b/addons/web_tour/static/src/js/tour_service.js @@ -30,7 +30,7 @@ return session.is_bound.then(function () { // in the page source. if (session.is_frontend && session.is_superuser) { var def = rpc.query({model: 'web_tour.tour', method: 'get_consumed_tours'}) - .exec({callback: ajax.rpc.bind(ajax)}); + .exec({type: "ajax"}); defs.push(def); } return $.when.apply($, defs).then(function (consumed_tours) { diff --git a/addons/website/static/src/js/web_planner_website.js b/addons/website/static/src/js/web_planner_website.js index 7f196a0ce9d..ccf84c803d0 100644 --- a/addons/website/static/src/js/web_planner_website.js +++ b/addons/website/static/src/js/web_planner_website.js @@ -4,20 +4,24 @@ odoo.define('web.planner.website', function (require) { var ajax = require('web.ajax'); var core = require('web.core'); var planner = require('web.planner.common'); +var rpc = require('web.rpc'); var session = require('web.session'); var website = require('website.website'); -var model = require('website.model'); var qweb = core.qweb; var WebsitePlannerLauncher = planner.PlannerLauncher.extend({ _fetch_planner_data: function () { - return model.performModelRPC('web.planner', 'search_read', [[['planner_application', '=', 'planner_website']]]).then((function (planner) { - if (!planner.length) return; + return rpc.query({model: 'web.planner', method: 'search_read'}) + .args([[['planner_application', '=', 'planner_website']]]) + .exec({type: "ajax"}) + .then((function (planner) { + planner = planner.records; + if (!planner.length) return; - planner[0].data = $.parseJSON(planner[0].data) || {}; - this._setup_for_planner(planner[0]); - }).bind(this)); + planner[0].data = $.parseJSON(planner[0].data) || {}; + this._setup_for_planner(planner[0]); + }).bind(this)); }, }); diff --git a/addons/website/static/src/js/website.backendDashboard.js b/addons/website/static/src/js/website.backendDashboard.js index 67a72a6de9e..94b7a89c6b9 100644 --- a/addons/website/static/src/js/website.backendDashboard.js +++ b/addons/website/static/src/js/website.backendDashboard.js @@ -103,9 +103,12 @@ var Dashboard = Widget.extend(ControlPanelMixin, { } var self = this; - this.performModelRPC('ir.config_parameter', 'set_param', ['google_management_client_id', ga_client_id]).then(function(){ - self.on_date_range_button('week'); - }); + this._rpc('ir.config_parameter', 'set_param') + .args(['google_management_client_id', ga_client_id]) + .exec() + .then(function(){ + self.on_date_range_button('week'); + }); }, render_dashboards: function() { diff --git a/addons/website/static/src/js/website.model.js b/addons/website/static/src/js/website.model.js deleted file mode 100644 index 66b75e398af..00000000000 --- a/addons/website/static/src/js/website.model.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Service to fetch data, websites Javascript must use performModelRPC of this module - */ -odoo.define('website.model', function (require) { -"use strict"; - -var Class = require('web.Class'); -var Mixins = require('web.mixins'); -var ajax = require('web.ajax'); - -var CallService = Class.extend(Mixins.EventDispatcherMixin, { - custom_events: { - call_service: '_callService' - }, - init: function () { - Mixins.EventDispatcherMixin.init.call(this); - }, - - //-------------------------------------------------------------------------- - // Private - //-------------------------------------------------------------------------- - - /** - * @private - * @param {OdooEvent} event - */ - _callService: function (event) { - var result = ajax[event.data.method].apply(ajax, event.data.args); - event.data.callback(result); - }, -}); - -var Model = Class.extend(Mixins.EventDispatcherMixin, Mixins.ServicesMixin, { - init: function (parent) { - Mixins.EventDispatcherMixin.init.call(this); - this.setParent(parent); - }, -}); - -return new Model(new CallService()); -}); diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js index 3a4d6dc5000..11072cac74e 100644 --- a/addons/website/static/src/js/website.seo.js +++ b/addons/website/static/src/js/website.seo.js @@ -490,17 +490,20 @@ var Configurator = Dialog.extend({ def.resolve(null); } else { var fields = ['website_meta_title', 'website_meta_description', 'website_meta_keywords']; - this.performModelRPC(obj.model, 'read', [[obj.id], fields, base.get_context()]).then(function (data) { - if (data.length) { - var meta = data[0]; - meta.model = obj.model; - def.resolve(meta); - } else { - def.resolve(null); - } - }).fail(function () { - def.reject(); - }); + this._rpc(obj.model, 'read') + .args([[obj.id], fields, base.get_context()]) + .exec() + .then(function (data) { + if (data.length) { + var meta = data[0]; + meta.model = obj.model; + def.resolve(meta); + } else { + def.resolve(null); + } + }).fail(function () { + def.reject(); + }); } return def; }, @@ -509,7 +512,9 @@ var Configurator = Dialog.extend({ if (!obj) { return $.Deferred().reject(); } else { - return this.performModelRPC(obj.model, 'write', [[obj.id], data, base.get_context()]); + return this._rpc(obj.model, 'write') + .args([[obj.id], data, base.get_context()]) + .exec(); } }, titleChanged: function () { diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 604c8d589f9..426c63e1d2e 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -4,6 +4,7 @@ odoo.define('website.snippets.editor', function (require) { var ajax = require("web.ajax"); var core = require("web.core"); var Dialog = require("web.Dialog"); +var rpc = require("web.rpc"); var editor = require("web_editor.editor"); var animation = require('web_editor.snippets.animation'); var options = require('web_editor.snippets.options'); @@ -54,7 +55,6 @@ options.registry.menu_data = options.Class.extend({ options.registry.company_data = options.Class.extend({ start: function () { - var self = this; this._super.apply(this, arguments); var proto = options.registry.company_data.prototype; @@ -62,11 +62,14 @@ options.registry.company_data = options.Class.extend({ if (proto.__link_deferred === undefined) { proto.__link_deferred = $.Deferred(); return ajax.jsonRpc("/web/session/get_session_info", "call").then(function (session) { - return self.performModelRPC("res.users", "read", [session.uid, ["company_id"]]).then(function (res) { - proto.__link_deferred.resolve( - "/web#action=base.action_res_company_form&view_type=form&id=" + (res && res[0] && res[0].company_id[0] || 1) - ); - }); + return rpc.query({model: "res.users", method: "read"}) + .args([session.uid, ["company_id"]]) + .exec({type: "ajax"}) + .then(function (res) { + proto.__link_deferred.resolve( + "/web#action=base.action_res_company_form&view_type=form&id=" + (res && res[0] && res[0].company_id[0] || 1) + ); + }); }); } }, diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index b42180246d2..94f8706c41d 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -21,7 +21,6 @@ - diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/website_blog.editor.js index 263e0e9317c..1e39dcd5a5f 100644 --- a/addons/website_blog/static/src/js/website_blog.editor.js +++ b/addons/website_blog/static/src/js/website_blog.editor.js @@ -1,7 +1,6 @@ odoo.define('website_blog.new_blog_post', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); var rpc = require('web.rpc'); var base = require('web_editor.base'); @@ -14,7 +13,7 @@ contentMenu.TopBar.include({ new_blog_post: function () { rpc.query({model: 'blog.blog', method: 'name_search'}) .withContext(base.get_context()) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function (blog_ids) { if (blog_ids.length === 1) { document.location = '/blog/' + blog_ids[0][0] + '/post/new'; diff --git a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js index 2dd6b6e4c41..0d3611ef87a 100644 --- a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js +++ b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js @@ -1,7 +1,7 @@ odoo.define('crm.partner_assign', function (require) { 'use strict'; -var model = require('website.model'); +var rpc = require('web.rpc'); var website = require('website.website'); /* * This file is intended to add interactivity to survey forms rendered by @@ -21,8 +21,12 @@ $('.interested_partner_assign_confirm').on('click',function(e){ var $btn = $(this); if ($('.interested_partner_assign_form .comment_interested').val() && $('.interested_partner_assign_form .contacted_interested').prop('checked')){ $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "partner_interested", - [[parseInt($('.interested_partner_assign_form .assign_lead_id').val())], $('.interested_partner_assign_form .comment_interested').val()]) + rpc.query({model: 'crm.lead', method: "partner_interested"}) + .args([ + [parseInt($('.interested_partner_assign_form .assign_lead_id').val())], + $('.interested_partner_assign_form .comment_interested').val() + ]) + .exec({type: "ajax"}) .then(function(){ window.location.href = '/my/leads'; }) @@ -39,12 +43,14 @@ $('.interested_partner_assign_confirm').on('click',function(e){ $('.desinterested_partner_assign_confirm').on('click',function(){ var $btn = $(this); $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "partner_desinterested", - [[parseInt($('.desinterested_partner_assign_form .assign_lead_id').val())], + rpc.query({model: 'crm.lead', method: "partner_desinterested"}) + .args([ + [parseInt($('.desinterested_partner_assign_form .assign_lead_id').val())], $('.desinterested_partner_assign_form .comment_desinterested').val(), $('.desinterested_partner_assign_form .contacted_desinterested').prop('checked'), $('.desinterested_partner_assign_form .customer_mark_spam').prop('checked'), - ]) + ]) + .exec({type: "ajax"}) .then(function(){ window.location.href = '/my/leads'; }).always(function() { @@ -56,9 +62,12 @@ $('.desinterested_partner_assign_confirm').on('click',function(){ opp_stage_buttons.on('click',function(e){ var $btn = $(this); $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "write", [[parseInt(e.currentTarget.getAttribute('opp'))],{ + rpc.query('crm.lead', "write") + .args([[parseInt(e.currentTarget.getAttribute('opp'))],{ stage_id: parseInt(e.currentTarget.getAttribute('data')), - },], {context: {website_partner_assign:1}}) + },]) + .withContext({website_partner_assign:1}) + .exec({type: "ajax"}) .fail(function() { $btn.prop('disabled', false); }) @@ -76,7 +85,8 @@ $('.edit_contact_form .country_id').on('change', function(){ $('.edit_contact_confirm').on('click',function(){ var $btn = $(this); $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "write", [[parseInt($('.edit_contact_form .opportunity_id').val())],{ + rpc.query({model: 'crm.lead', method: "write"}) + .args([[parseInt($('.edit_contact_form .opportunity_id').val())],{ partner_name: $('.edit_contact_form .partner_name').val(), phone: $('.edit_contact_form .phone').val(), mobile: $('.edit_contact_form .mobile').val(), @@ -88,6 +98,7 @@ $('.edit_contact_confirm').on('click',function(){ state_id: parseInt($('.edit_contact_form .state_id').find(":selected").attr('value')), country_id: parseInt($('.edit_contact_form .country_id').find(":selected").attr('value')), }]) + .exec({type: "ajax"}) .fail(function() { $btn.prop('disabled', false); }) @@ -100,11 +111,13 @@ $('.edit_contact_confirm').on('click',function(){ $('.new_opp_confirm').on('click',function(e){ var $btn = $(this); $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "create_opp_portal", [{ + rpc.query({model: 'crm.lead', method: "create_opp_portal"}) + .args([{ contact_name: $('.new_opp_form .contact_name').val(), title: $('.new_opp_form .title').val(), description: $('.new_opp_form .description').val(), }]) + .exec({type: "ajax"}) .done(function(response){ if (response.errors) { $('#new-opp-dialog .alert').remove(); @@ -125,7 +138,8 @@ $('.new_opp_confirm').on('click',function(e){ $('.edit_opp_confirm').on('click',function(){ var $btn = $(this); $btn.prop('disabled', true); - model.performModelRPC('crm.lead', "update_lead_portal", [[parseInt($('.edit_opp_form .opportunity_id').val())],{ + rpc.query({model: 'crm.lead', method: "update_lead_portal"}) + .args([[parseInt($('.edit_opp_form .opportunity_id').val())],{ date_deadline: $('.edit_opp_form .date_deadline').val(), planned_revenue: parseFloat($('.edit_opp_form .planned_revenue').val()), probability: parseFloat($('.edit_opp_form .probability').val()), @@ -134,6 +148,7 @@ $('.edit_opp_confirm').on('click',function(){ activity_date_deadline: $('.edit_opp_form .activity_date_deadline').val(), priority: $('input[name="PriorityRadioOptions"]:checked').val(), }]) + .exec({type: "ajax"}) .fail(function() { $btn.prop('disabled', false); }) diff --git a/addons/website_links/static/src/js/website_links.js b/addons/website_links/static/src/js/website_links.js index d9a729672eb..e7e12589843 100644 --- a/addons/website_links/static/src/js/website_links.js +++ b/addons/website_links/static/src/js/website_links.js @@ -3,10 +3,10 @@ odoo.define('website_links.website_links', function (require) { var ajax = require('web.ajax'); var core = require('web.core'); +var rpc = require('web.rpc'); var Widget = require('web.Widget'); var base = require('web_editor.base'); var website = require('website.website'); -var model = require('website.model'); var qweb = core.qweb; var _t = core._t; @@ -49,11 +49,13 @@ if(!$('.o_website_links_create_tracked_url').length) { }); }, fetch_objects: function() { - return model.performModelRPC(this.obj, 'search_read', [[]]).then(function(result) { - return _.map(result, function(val) { - return {id: val.id, text:val.name}; + return rpc.query({model: this.obj, method: 'search_read'}) + .exec({type: "ajax"}) + .then(function(result) { + return _.map(result, function(val) { + return {id: val.id, text:val.name}; + }); }); - }); }, object_exists: function(query) { return _.find(this.objects, function(val) { @@ -68,10 +70,13 @@ if(!$('.o_website_links_create_tracked_url').length) { create_object: function(name) { var self = this; - return model.performModelRPC(this.obj, 'create', [{name:name}]).then(function(record) { - self.element.attr('value', record); - self.objects.push({'id': record, 'text': name}); - }); + return rpc.query({model: this.obj, method: 'create'}) + .args([{name:name}]) + .exec({type: "ajax"}) + .then(function(record) { + self.element.attr('value', record); + self.objects.push({'id': record, 'text': name}); + }); }, }); diff --git a/addons/website_links/static/src/js/website_links_charts.js b/addons/website_links/static/src/js/website_links_charts.js index 892aff45494..a0033f0148e 100644 --- a/addons/website_links/static/src/js/website_links_charts.js +++ b/addons/website_links/static/src/js/website_links_charts.js @@ -1,10 +1,10 @@ odoo.define('website_links.charts', function (require) { 'use strict'; +var rpc = require('web.rpc'); var Widget = require('web.Widget'); var base = require('web_editor.base'); var website = require('website.website'); -var model = require('website.model'); var exports = {}; @@ -133,29 +133,39 @@ if(!$('.o_website_links_chart').length) { var links_domain = ['link_id', '=', parseInt(link_id)]; var total_clicks = function() { - return clicks.call('search_count', [[links_domain]]); + return rpc.query({model: 'link.tracker.click', method: 'search_count'}) + .args([[links_domain]]) + .exec({type: "ajax"}); }; var clicks_by_day = function() { - return model.performModelRPC('link.tracker.click', 'read_group', [[links_domain], ['create_date']], - {'groupby':'create_date:day'}); + return rpc.query({model: 'link.tracker.click', method: 'read_group'}) + .args([[links_domain], ['create_date']]) + .kwargs({'groupby':'create_date:day'}) + .exec({type: "ajax"}); }; var clicks_by_country = function() { - return model.performModelRPC('link.tracker.click', 'read_group', [[links_domain], ['country_id']], - {'groupby':'country_id'}); + return rpc.query({model: 'link.tracker.click', method: 'read_group'}) + .args([[links_domain], ['country_id']]) + .kwargs({'groupby':'country_id'}) + .exec({type: "ajax"}); }; var last_week_clicks_by_country = function() { var interval = moment().subtract(7, 'days').format("YYYY-MM-DD"); - return model.performModelRPC('link.tracker.click', 'read_group', [[links_domain, ['create_date', '>', interval]], ['country_id']], - {'groupby':'country_id'}); + return rpc.query({model: 'link.tracker.click', method: 'read_group'}) + .args([[links_domain, ['create_date', '>', interval]], ['country_id']]) + .kwargs({'groupby':'country_id'}) + .exec({type: "ajax"}); }; var last_month_clicks_by_country = function() { var interval = moment().subtract(30, 'days').format("YYYY-MM-DD"); - return model.performModelRPC('link.tracker.click', 'read_group', [[links_domain, ['create_date', '>', interval]], ['country_id']], - {'groupby':'country_id'}); + return rpc.query({model: 'link.tracker.click', method: 'read_group'}) + .args([[links_domain, ['create_date', '>', interval]], ['country_id']]) + .kwargs({'groupby':'country_id'}) + .exec({type: "ajax"}); }; $.when(total_clicks(), diff --git a/addons/website_mail_channel/static/src/js/website_mail_channel.editor.js b/addons/website_mail_channel/static/src/js/website_mail_channel.editor.js index 369f8787adb..c15f30c223b 100644 --- a/addons/website_mail_channel/static/src/js/website_mail_channel.editor.js +++ b/addons/website_mail_channel/static/src/js/website_mail_channel.editor.js @@ -2,7 +2,7 @@ odoo.define('website_mail_channel.editor', function (require) { 'use strict'; var core = require('web.core'); -var model = require('website.model'); +var rpc = require('web.rpc'); var base = require('web_editor.base'); var options = require('web_editor.snippets.options'); var website = require('website.website'); @@ -18,8 +18,10 @@ options.registry.subscribe = options.Class.extend({ window_title: _t("Add a Subscribe Button"), select: _t("Discussion List"), init: function (field) { - return model.performModelRPC('mail.channel', 'name_search', - ['', [['public','=','public']]], { context: base.get_context() }); + return rpc.query({model: 'mail.channel', method: 'name_search'}) + .args(['', [['public','=','public']]]) + .withContext(base.get_context()) + .exec({type: "ajax"}); }, }).then(function (mail_channel_id) { self.$target.attr("data-id", mail_channel_id); diff --git a/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js b/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js index 1da6cc8886b..2189a59c746 100644 --- a/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js +++ b/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js @@ -1,9 +1,9 @@ odoo.define('website_mass_mailing.editor', function (require) { 'use strict'; -var model = require('website.model'); var ajax = require('web.ajax'); var core = require('web.core'); +var rpc = require('web.rpc'); var base = require('web_editor.base'); var web_editor = require('web_editor.editor'); var options = require('web_editor.snippets.options'); @@ -21,7 +21,10 @@ var mass_mailing_common = options.Class.extend({ 'window_title': this.popup_title, 'select': _t("Newsletter"), 'init': function (field) { - return model.performModelRPC('mail.mass_mailing.list', 'name_search', ['', []], { context: base.get_context() }); + return rpc.query({model: 'mail.mass_mailing.list', method: 'name_search'}) + .args(['', []]) + .withContext(base.get_context()) + .exec({type: "ajax"}); }, }); def.then(function (mailing_list_id) { diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js index f59de3c3b73..3bacdd80d5b 100644 --- a/addons/website_sale/static/src/js/website_sale.editor.js +++ b/addons/website_sale/static/src/js/website_sale.editor.js @@ -3,7 +3,7 @@ odoo.define('website_sale.editor', function (require) { var ajax = require('web.ajax'); var core = require('web.core'); -var model = require('website.model'); +var rpc = require('web.rpc'); var contentMenu = require('website.contentMenu'); var options = require('web_editor.snippets.options'); @@ -44,16 +44,17 @@ options.registry.website_sale = options.Class.extend({ if (size_y >= 4) $select = $select.add($size.find('tr:eq(3) td:lt('+size_x+')')); $select.addClass("selected"); - model.performModelRPC('product.style', 'search_read', [[]]) - .then(function (data) { - var $ul = self.$el.find('ul[name="style"]'); - for (var k in data) { - $ul.append( - $('
  • ') - .append( $('').text(data[k]['name']) )); - } - self.set_active(); - }); + rpc.query({model: 'product.style', method: 'search_read'}) + .exec({type: "ajax"}) + .then(function (data) { + var $ul = self.$el.find('ul[name="style"]'); + for (var k in data) { + $ul.append( + $('
  • ') + .append( $('').text(data[k]['name']) )); + } + self.set_active(); + }); this.bind_resize(); }, diff --git a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js index 96c81defe6f..5d6de94656d 100644 --- a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js +++ b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js @@ -84,7 +84,7 @@ var ProductWishlist = Widget.extend({ rpc.query({model: 'product.wishlist', method: 'write'}) .args([[wish], { active: false }, base.get_context()]) - .exec({callback: ajax.rpc.bind(ajax)}) + .exec({type: "ajax"}) .then(function(){ $(tr).hide(); });