diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 51760a3c3b8..e150405e3e3 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -267,69 +267,75 @@ var FieldMany2One = AbstractField.extend({
domain.push(['id', 'not in', blacklisted_ids]);
}
- this.performModelRPC(this.field.relation, "name_search", [], {
- name: search_val,
- args: domain,
- operator: "ilike",
- limit: this.limit + 1,
- context: context,
- }).then(function (result) {
- // possible selections for the m2o
- var values = _.map(result, function (x) {
- x[1] = x[1].split("\n")[0];
- return {
- label: _.str.escapeHTML(x[1].trim()) || data.noDisplayContent,
- value: x[1],
- name: x[1],
- id: x[0],
- };
+ this.rpc(this.field.relation, "name_search")
+ .kwargs({
+ name: search_val,
+ args: domain,
+ operator: "ilike",
+ limit: this.limit + 1,
+ context: context,
+ })
+ .exec()
+ .then(function (result) {
+ // possible selections for the m2o
+ var values = _.map(result, function (x) {
+ x[1] = x[1].split("\n")[0];
+ return {
+ label: _.str.escapeHTML(x[1].trim()) || data.noDisplayContent,
+ value: x[1],
+ name: x[1],
+ id: x[0],
+ };
+ });
+
+ // search more... if more results than limit
+ if (values.length > self.limit) {
+ values = values.slice(0, self.limit);
+ values.push({
+ label: _t("Search More..."),
+ action: function () {
+ self.rpc(self.field.relation, "name_search")
+ .kwargs({
+ name: search_val,
+ args: domain,
+ operator: "ilike",
+ limit: 160,
+ context: context,
+ })
+ .exec()
+ .then(self._searchCreatePopup.bind(self, "search"));
+ },
+ classname: 'o_m2o_dropdown_option',
+ });
+ }
+ var create_enabled = self.can_create && !self.nodeOptions.no_create;
+ // quick create
+ var raw_result = _.map(result, function (x) { return x[1]; });
+ if (create_enabled && !self.nodeOptions.no_quick_create &&
+ search_val.length > 0 && !_.contains(raw_result, search_val)) {
+ values.push({
+ label: _.str.sprintf(_t('Create "%s"'),
+ $('').text(search_val).html()),
+ action: self._quickCreate.bind(self, search_val),
+ classname: 'o_m2o_dropdown_option'
+ });
+ }
+ // create and edit ...
+ if (create_enabled && !self.nodeOptions.no_create_edit) {
+ values.push({
+ label: _t("Create and Edit..."),
+ action: self._searchCreatePopup.bind(self, "form", false, self._createContext(search_val)),
+ classname: 'o_m2o_dropdown_option',
+ });
+ } else if (values.length === 0) {
+ values.push({
+ label: _t("No results to show..."),
+ });
+ }
+
+ def.resolve(values);
});
- // search more... if more results than limit
- if (values.length > self.limit) {
- values = values.slice(0, self.limit);
- values.push({
- label: _t("Search More..."),
- action: function () {
- self.performModelRPC(self.field.relation, "name_search", {
- name: search_val,
- args: domain,
- operator: "ilike",
- limit: 160,
- context: context,
- }).then(self._searchCreatePopup.bind(self, "search"));
- },
- classname: 'o_m2o_dropdown_option',
- });
- }
- var create_enabled = self.can_create && !self.nodeOptions.no_create;
- // quick create
- var raw_result = _.map(result, function (x) { return x[1]; });
- if (create_enabled && !self.nodeOptions.no_quick_create &&
- search_val.length > 0 && !_.contains(raw_result, search_val)) {
- values.push({
- label: _.str.sprintf(_t('Create "%s"'),
- $('').text(search_val).html()),
- action: self._quickCreate.bind(self, search_val),
- classname: 'o_m2o_dropdown_option'
- });
- }
- // create and edit ...
- if (create_enabled && !self.nodeOptions.no_create_edit) {
- values.push({
- label: _t("Create and Edit..."),
- action: self._searchCreatePopup.bind(self, "form", false, self._createContext(search_val)),
- classname: 'o_m2o_dropdown_option',
- });
- } else if (values.length === 0) {
- values.push({
- label: _t("No results to show..."),
- });
- }
-
- def.resolve(values);
- });
-
return def;
},
/**
@@ -379,13 +385,13 @@ var FieldMany2One = AbstractField.extend({
if (this.mode === 'readonly' && !this.nodeOptions.no_open) {
event.preventDefault();
event.stopPropagation();
- this.performModelRPC(this.field.relation, 'get_formview_action', [
- [this.value.res_id]
- ], {
- context: this.record.getContext({fieldName: this.name}),
- }).then(function (action) {
- self.trigger_up('do_action', {action: action});
- });
+ this.rpc(this.field.relation, 'get_formview_action')
+ .args([[this.value.res_id]])
+ .withContext(this.record.getContext({fieldName: this.name}))
+ .exec()
+ .then(function (action) {
+ self.trigger_up('do_action', {action: action});
+ });
}
},
/**
@@ -397,26 +403,24 @@ var FieldMany2One = AbstractField.extend({
return;
}
var self = this;
- var model = this.field.relation;
- var method = 'get_formview_id';
var context = this.record.getContext({fieldName: this.name});
- this.performModelRPC(model, method, [
- [this.value.res_id]
- ], {
- context: context,
- }).then(function (view_id) {
- new dialogs.FormViewDialog(self, {
- res_model: self.field.relation,
- res_id: self.value.res_id,
- context: context,
- title: _t("Open: ") + self.string,
- view_id: view_id,
- readonly: !self.can_write,
- on_saved: function () {
- self.trigger_up('reload', {db_id: self.value.id});
- },
- }).open();
- });
+ this.rpc(this.field.relation, 'get_formview_id')
+ .args([[this.value.res_id]])
+ .withContext(context)
+ .exec()
+ .then(function (view_id) {
+ new dialogs.FormViewDialog(self, {
+ res_model: self.field.relation,
+ res_id: self.value.res_id,
+ context: context,
+ title: _t("Open: ") + self.string,
+ view_id: view_id,
+ readonly: !self.can_write,
+ on_saved: function () {
+ self.trigger_up('reload', {db_id: self.value.id});
+ },
+ }).open();
+ });
},
/**
* @private
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 b8010c97899..83fbbf3a4bf 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -300,26 +300,28 @@ var KanbanController = BasicController.extend({
}
data.context['default_' + data.groupedBy[0]] = column.id;
- this.performModelRPC(data.model, "name_create", [event.data.value], {
- context: data.context,
- }).then(
- add_record,
- function (event) {
- event.preventDefault();
- var popup = new form_common.SelectCreatePopup(this);
- popup.select_element(
- data.model,
- {
- title: _t("Create: "),
- initial_view: "form",
- disable_multiple_selection: true,
- },
- [],
- { default_name: event.data.value }
- );
- popup.on("elements_selected", null, add_record);
- }
- );
+ this.rpc(data.model, "name_create")
+ .args([event.data.value])
+ .withContext(data.context)
+ .exec()
+ .then(
+ add_record,
+ function (event) {
+ event.preventDefault();
+ var popup = new form_common.SelectCreatePopup(this);
+ popup.select_element(
+ data.model,
+ {
+ title: _t("Create: "),
+ initial_view: "form",
+ disable_multiple_selection: true,
+ },
+ [],
+ { default_name: event.data.value }
+ );
+ popup.on("elements_selected", null, add_record);
+ }
+ );
},
/**
* @param {OdooEvent} event
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 8970343c3a9..1448ea35ca7 100644
--- a/addons/web/static/src/js/views/kanban/kanban_model.js
+++ b/addons/web/static/src/js/views/kanban/kanban_model.js
@@ -98,28 +98,30 @@ return BasicModel.extend({
if (!groupByField || groupByField.type !== 'many2one') {
return $.Deferred().reject(); // only supported when grouped on m2o
}
- return this.performModelRPC(groupByField.relation, 'name_create', [name], {
- context: parent.context, // todo: combine with view context
- }).then(function (result) {
- var newGroup = self._makeDataPoint({
- modelName: parent.model,
- context: parent.context,
- domain: parent.domain.concat([[groupBy,"=",result[0]]]),
- fields: parent.fields,
- fieldNames: parent.fieldNames,
- groupedBy: parent.groupedBy,
- isOpen: true,
- limit: parent.limit,
- openGroupByDefault: true,
- orderedBy: parent.orderedBy,
- value: result,
- });
+ return this.rpc(groupByField.relation, 'name_create')
+ .args([name])
+ .withContext(parent.context) // todo: combine with view context
+ .exec()
+ .then(function (result) {
+ var newGroup = self._makeDataPoint({
+ modelName: parent.model,
+ context: parent.context,
+ domain: parent.domain.concat([[groupBy,"=",result[0]]]),
+ fields: parent.fields,
+ fieldNames: parent.fieldNames,
+ groupedBy: parent.groupedBy,
+ isOpen: true,
+ limit: parent.limit,
+ openGroupByDefault: true,
+ orderedBy: parent.orderedBy,
+ value: result,
+ });
- // newGroup.is_open = true;
- parent.data.push(newGroup.id);
- parent.count++;
- return newGroup.id;
- });
+ // newGroup.is_open = true;
+ parent.data.push(newGroup.id);
+ parent.count++;
+ return newGroup.id;
+ });
},
});
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 cd203c22d35..8683a6adbce 100644
--- a/addons/web/static/src/js/views/pivot/pivot_model.js
+++ b/addons/web/static/src/js/views/pivot/pivot_model.js
@@ -82,13 +82,13 @@ var PivotModel = AbstractModel.extend({
}
return $.when.apply(null, groupbys.map(function (groupBy) {
- return self.performModelRPC(self.modelName, 'read_group', [], {
- context: self.data.context,
- domain: header.domain.length ? header.domain : self.data.domain,
- fields: _.map(fields, function (field) { return field.split(':')[0]; }),
- groupby: groupBy,
- lazy: false,
- });
+ 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]; }))
+ .groupBy(groupBy)
+ .lazy(false)
+ .exec();
})).then(function () {
var data = Array.prototype.slice.call(arguments);
var datapt, attrs, j, l, row, col, cell_value, groupBys;
@@ -513,13 +513,13 @@ var PivotModel = AbstractModel.extend({
}
return $.when.apply(null, groupBys.map(function (groupBy) {
- return self.performModelRPC(self.modelName, 'read_group', [], {
- context: self.data.context,
- domain: self.data.domain,
- fields: _.map(fields, function (field) { return field.split(':')[0]; }),
- groupby: groupBy,
- lazy: false,
- });
+ return self.rpc(self.modelName, 'read_group')
+ .withContext(self.data.context)
+ .withDomain(self.data.domain)
+ .withFields(_.map(fields, function (field) { return field.split(':')[0]; }))
+ .groupBy(groupBy)
+ .lazy(false)
+ .exec();
})).then(function () {
var data = Array.prototype.slice.call(arguments);
if (data[0][0].__count === 0) {
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 9c843937c90..a1fb3cc5c4b 100644
--- a/addons/web/static/src/js/widgets/model_field_selector.js
+++ b/addons/web/static/src/js/widgets/model_field_selector.js
@@ -317,12 +317,14 @@ var ModelFieldSelector = Widget.extend({
_getModelFieldsFromCache: function (model, filters) {
var def = modelFieldsCache.cacheDefs[model];
if (!def) {
- def = modelFieldsCache.cacheDefs[model] = this.performModelRPC(model, "fields_get", [
- false,
- ["store", "searchable", "type", "string", "relation", "selection", "related"],
- ]).then((function (fields) {
- modelFieldsCache.cache[model] = sortFields(fields);
- }).bind(this));
+ def = modelFieldsCache.cacheDefs[model] = this.rpc(model, "fields_get")
+ .args([
+ false,
+ ["store", "searchable", "type", "string", "relation", "selection", "related"]])
+ .exec()
+ .then((function (fields) {
+ modelFieldsCache.cache[model] = sortFields(fields);
+ }).bind(this));
}
return def.then((function () {
return _.filter(modelFieldsCache.cache[model], function (f) {
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 b953791eec2..feaf487fcc7 100644
--- a/addons/web/static/src/js/widgets/switch_company_menu.js
+++ b/addons/web/static/src/js/widgets/switch_company_menu.js
@@ -18,9 +18,12 @@ 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.performModelRPC('res.users', 'write', [[session.uid], {'company_id': company_id}]).then(function() {
- location.reload();
- });
+ self.rpc('res.users', 'write')
+ .args([[session.uid], {'company_id': company_id}])
+ .exec()
+ .then(function() {
+ location.reload();
+ });
}, 1500, true));
self.$('.oe_topbar_name').text(session.user_companies.current_company[1]);
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 457377ac528..b3b17c5c1cc 100644
--- a/addons/web_planner/static/src/js/web_planner_common.js
+++ b/addons/web_planner/static/src/js/web_planner_common.js
@@ -1,12 +1,14 @@
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');
-var Widget = require('web.Widget');
+var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
+var Widget = require('web.Widget');
var QWeb = core.qweb;
@@ -66,10 +68,10 @@ var PlannerDialog = Dialog.extend({
* Fetch the planner's rendered template
*/
willStart: function() {
- var def = this.rpc('web.planner', 'render')
+ var def = rpc.query({model: 'web.planner', method: 'render'})
.args([this.planner.view_id[0], this.planner.planner_application])
.withContext(session.user_context)
- .exec()
+ .exec({callback: ajax.rpc.bind(ajax)})
.then((function (template) {
this.$template = $(template);
}).bind(this));
@@ -351,20 +353,19 @@ var PlannerDialog = Dialog.extend({
this._save_planner_data();
},
_save_planner_data: function() {
- return this.rpc('web.planner', 'write')
+ return rpc.query({model: 'web.planner', method: 'write'})
.args([this.planner.id, {'data': JSON.stringify(this.planner.data), 'progress': this.planner.progress}])
- .exec();
+ .exec({callback: ajax.rpc.bind(ajax)});
},
show_enterprise: function () {
- var self = this;
var buttons = [{
text: _t("Upgrade now"),
classes: 'btn-primary',
close: true,
click: function () {
- self.rpc("res.users", "search_count")
+ rpc.query({model: "res.users", method: "search_count"})
.args([[["share", "=", false]]])
- .exec()
+ .exec({callback: ajax.rpc.bind(ajax)})
.then(function (data) {
window.location = "https://www.odoo.com/odoo-enterprise/upgrade?utm_medium=community_upgrade&num_users=" + data;
});
@@ -392,6 +393,9 @@ var PlannerLauncher = Widget.extend({
events: {
"click": "show_dialog"
},
+ init: function () {
+ this._super.apply(this, arguments);
+ },
start: function () {
this.$progress = this.$(".progress");
this.$progressBar = this.$progress.find(".progress-bar");
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 51ce734f5b5..263e0e9317c 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,9 @@
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');
var website = require('website.website');
var contentMenu = require('website.contentMenu');
@@ -10,22 +12,25 @@ var _t = core._t;
contentMenu.TopBar.include({
new_blog_post: function () {
- this.performModelRPC('blog.blog', 'name_search', [], { context: base.get_context() }).then(function (blog_ids) {
- if (blog_ids.length === 1) {
- document.location = '/blog/' + blog_ids[0][0] + '/post/new';
- } else if (blog_ids.length > 1) {
- website.prompt({
- id: "editor_new_blog",
- window_title: _t("New Blog Post"),
- select: "Select Blog",
- init: function (field) {
- return blog_ids;
- },
- }).then(function (blog_id) {
- document.location = '/blog/' + blog_id + '/post/new';
- });
- }
- });
+ rpc.query({model: 'blog.blog', method: 'name_search'})
+ .withContext(base.get_context())
+ .exec({callback: ajax.rpc.bind(ajax)})
+ .then(function (blog_ids) {
+ if (blog_ids.length === 1) {
+ document.location = '/blog/' + blog_ids[0][0] + '/post/new';
+ } else if (blog_ids.length > 1) {
+ website.prompt({
+ id: "editor_new_blog",
+ window_title: _t("New Blog Post"),
+ select: "Select Blog",
+ init: function (field) {
+ return blog_ids;
+ },
+ }).then(function (blog_id) {
+ document.location = '/blog/' + blog_id + '/post/new';
+ });
+ }
+ });
},
});
});
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 a2d7d761060..96c81defe6f 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
@@ -2,6 +2,7 @@ odoo.define('website_sale_wishlist.wishlist', function (require) {
"use strict";
var ajax = require('web.ajax');
+var rpc = require('web.rpc');
var Widget = require('web.Widget');
var base = require('web_editor.base');
var website_sale_utils = require('website_sale.utils');
@@ -81,9 +82,9 @@ var ProductWishlist = Widget.extend({
var wish = tr.data('wish-id');
var product = tr.data('product-id');
- this.rpc('product.wishlist', 'write')
+ rpc.query({model: 'product.wishlist', method: 'write'})
.args([[wish], { active: false }, base.get_context()])
- .exec()
+ .exec({callback: ajax.rpc.bind(ajax)})
.then(function(){
$(tr).hide();
});