diff options
Diffstat (limited to 'addons/web/static/src')
24 files changed, 284 insertions, 225 deletions
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('<a href="%s"></a>', 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.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 { + 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); } - 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, - }); + // 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; - }); + 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() { |
