summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core/rpc.js
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2017-11-24 12:43:22 +0100
committerNicolas Martinelli <nim-odoo@users.noreply.github.com>2017-11-24 14:16:13 +0100
commite703d07e6880f2a1d1c27e2339fd21850fc30dc4 (patch)
treed3034a380622134dc70b6cedaadb4da70c2ac7d2 /addons/web/static/src/js/core/rpc.js
parent63cd67b0ec7c884be223ffc6fa5f155d068db0a8 (diff)
[FIX] web: read_group RPC
Example of failing request: ``` rpc.query({ model: 'link.tracker.click', method: 'read_group', args: [[links_domain, ['create_date', '>', interval]], ['country_id']], kwargs: {groupby:'country_id'}, }); ``` The RPC request built contains the following: ``` args: [[["link_id", "=", 1]], ["create_date"]] kwargs: {groupby: "create_date:day", domain: [], fields: []} ``` This will be interpreted server side as: ``` model.read_group([['link_id', '=', 1]], ['create_date'], groupby=['create_date:day'], domain=[], fields=[]) ``` 2 arguments match `domain` and `fields`, which causes a crash. opw-781300
Diffstat (limited to 'addons/web/static/src/js/core/rpc.js')
-rw-r--r--addons/web/static/src/js/core/rpc.js12
1 files changed, 9 insertions, 3 deletions
diff --git a/addons/web/static/src/js/core/rpc.js b/addons/web/static/src/js/core/rpc.js
index 6ad91c0e4f9..53d298c9019 100644
--- a/addons/web/static/src/js/core/rpc.js
+++ b/addons/web/static/src/js/core/rpc.js
@@ -51,9 +51,15 @@ return {
}
if (options.method === 'read_group') {
- params.kwargs.domain = options.domain || params.domain || params.kwargs.domain || [];
- params.kwargs.fields = options.fields || params.fields || params.kwargs.fields || [];
- params.kwargs.groupby = options.groupBy || params.groupBy || params.kwargs.groupby || [];
+ if (!(params.args && params.args[0] !== undefined)) {
+ params.kwargs.domain = options.domain || params.domain || params.kwargs.domain || [];
+ }
+ if (!(params.args && params.args[1] !== undefined)) {
+ params.kwargs.fields = options.fields || params.fields || params.kwargs.fields || [];
+ }
+ if (!(params.args && params.args[2] !== undefined)) {
+ params.kwargs.groupby = options.groupBy || params.groupBy || params.kwargs.groupby || [];
+ }
params.kwargs.offset = options.offset || params.offset || params.kwargs.offset;
params.kwargs.limit = options.limit || params.limit || params.kwargs.limit;
// In kwargs, we look for "orderby" rather than "orderBy" (note the absence of capital B),