summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/apps.js4
-rw-r--r--addons/web/static/src/js/chrome/action_manager.js28
-rw-r--r--addons/web/static/src/js/chrome/search_inputs.js4
-rw-r--r--addons/web/static/src/js/chrome/sidebar.js35
-rw-r--r--addons/web/static/src/js/chrome/user_menu.js30
-rw-r--r--addons/web/static/src/js/chrome/web_client.js8
-rw-r--r--addons/web/static/src/js/core/widget.js2
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js4
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js10
-rw-r--r--addons/web/static/src/js/fields/upgrade_fields.js9
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js40
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_controller.js8
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_model.js128
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_quick_create.js6
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_renderer.js8
-rw-r--r--addons/web/static/src/js/views/graph/graph_model.js15
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js2
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_model.js10
-rw-r--r--addons/web/static/src/js/views/pivot/pivot_model.js4
-rw-r--r--addons/web/static/src/js/widgets/change_password.js21
-rw-r--r--addons/web/static/src/js/widgets/data_export.js75
-rw-r--r--addons/web/static/src/js/widgets/debug_manager.js54
-rw-r--r--addons/web/static/src/js/widgets/model_field_selector.js2
-rw-r--r--addons/web/static/src/js/widgets/switch_company_menu.js2
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() {