diff options
| author | Nicolas Martinelli <nim@odoo.com> | 2017-11-24 12:43:22 +0100 |
|---|---|---|
| committer | Nicolas Martinelli <nim-odoo@users.noreply.github.com> | 2017-11-24 14:16:13 +0100 |
| commit | e703d07e6880f2a1d1c27e2339fd21850fc30dc4 (patch) | |
| tree | d3034a380622134dc70b6cedaadb4da70c2ac7d2 /addons/web/static/src/js/core/rpc.js | |
| parent | 63cd67b0ec7c884be223ffc6fa5f155d068db0a8 (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.js | 12 |
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), |
