From 690e6aff3fdc1159d8752090322d5e8115e4417f Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Tue, 13 Oct 2020 08:50:43 +0000 Subject: [FIX] web: fetching reference fields' name_get batched in grouped list Commit e10fd34682a0c55568cba66eb271b3aa5bed7c1d introduced batched reference fields name_gets across groups but was also buggy as follows: Have a grouped list view showing at least 2 groups Have a reference field with different values showed in the list for each record Before this commit, the name_get of those reference fiels were fetched only for the last group After this commit, the name_get are fetched in a batched fashion (by model) for each group and display correctly closes odoo/odoo#59903 X-original-commit: bbb608a1eff638040f0fc7b951fedf1579cc15b2 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Lucas Perais (lpe) --- addons/web/static/src/js/views/basic/basic_model.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src/js/views/basic/basic_model.js') 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 3b750fc743a..649dd3bb1c6 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -2626,7 +2626,7 @@ var BasicModel = AbstractModel.extend({ var toFetch = {}; _.each(list.data, function (groupIndex) { var group = self.localData[groupIndex]; - _.extend(toFetch, self._getDataToFetchByModel(group, fieldName)); + self._getDataToFetchByModel(group, fieldName, toFetch); }); var defs = []; @@ -3501,13 +3501,18 @@ var BasicModel = AbstractModel.extend({ * * @param {Object} list a valid resource object * @param {string} fieldName + * @param {Object} [toFetchAcc] an object to store fetching data. Used when + * batching reference across multiple groups. + * [modelName: string]: { + * [recordId: number]: datapointId[] + * } * @returns {Object} each key represent a model and contain a sub-object * where each key represent an id (res_id) containing an array of * webclient id (referred to a datapoint, so not a res_id). */ - _getDataToFetchByModel: function (list, fieldName) { + _getDataToFetchByModel: function (list, fieldName, toFetchAcc) { var self = this; - var toFetch = {}; + var toFetch = toFetchAcc || {}; _.each(list.data, function (dataPoint) { var record = self.localData[dataPoint]; var value = record.data[fieldName]; -- cgit v1.2.3