summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core/rpc.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/core/rpc.js')
-rw-r--r--addons/web/static/src/js/core/rpc.js44
1 files changed, 25 insertions, 19 deletions
diff --git a/addons/web/static/src/js/core/rpc.js b/addons/web/static/src/js/core/rpc.js
index ef47e1883ea..6ad91c0e4f9 100644
--- a/addons/web/static/src/js/core/rpc.js
+++ b/addons/web/static/src/js/core/rpc.js
@@ -46,38 +46,44 @@ return {
params.args = options.args || [];
params.model = options.model;
params.method = options.method;
- params.kwargs = options.kwargs || {};
- params.kwargs.context = options.context || params.kwargs.context;
+ params.kwargs = _.extend(params.kwargs || {}, options.kwargs);
+ params.kwargs.context = options.context || params.context || params.kwargs.context;
}
if (options.method === 'read_group') {
- params.kwargs.groupby = options.groupBy || params.kwargs.groupby || [];
- params.kwargs.domain = options.domain || params.kwargs.domain || [];
- params.kwargs.fields = options.fields || params.kwargs.fields || [];
- params.kwargs.lazy = 'lazy' in options ? options.lazy : params.kwargs.lazy;
- var orderBy = options.orderBy || params.orderBy;
- params.kwargs.orderby = orderBy ? this._serializeSort(orderBy) : false;
+ 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 || [];
+ 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),
+ // since the Python argument to the actual function is "orderby".
+ var orderBy = options.orderBy || params.orderBy || params.kwargs.orderby;
+ params.kwargs.orderby = orderBy ? this._serializeSort(orderBy) : orderBy;
+ params.kwargs.lazy = 'lazy' in options ? options.lazy : params.lazy;
}
if (options.method === 'search_read') {
// call the model method
- params.args = [
- options.domain || [],
- options.fields || false,
- options.offset || 0,
- options.limit || false,
- this._serializeSort(options.orderBy || params.orderBy || []),
- ];
+ params.kwargs.domain = options.domain || params.domain || params.kwargs.domain;
+ params.kwargs.fields = options.fields || params.fields || params.kwargs.fields;
+ 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 "order" rather than "orderBy" since the Python
+ // argument to the actual function is "order".
+ var orderBy = options.orderBy || params.orderBy || params.kwargs.order;
+ params.kwargs.order = orderBy ? this._serializeSort(orderBy) : orderBy;
}
if (options.route === '/web/dataset/search_read') {
// specifically call the controller
params.model = options.model || params.model;
- params.domain = options.domain || params.domain || [];
- params.fields = options.fields || params.fields || false;
+ params.domain = options.domain || params.domain;
+ params.fields = options.fields || params.fields;
params.limit = options.limit || params.limit;
- params.offset = options.offset || params.offset ;
- params.sort = this._serializeSort(options.orderBy || params.orderBy || []);
+ params.offset = options.offset || params.offset;
+ var orderBy = options.orderBy || params.orderBy;
+ params.sort = orderBy ? this._serializeSort(orderBy) : orderBy;
params.context = options.context || params.context || {};
}