From 3b9483f170d6280f6e39ad0acd4a39dbcb112f55 Mon Sep 17 00:00:00 2001 From: Martin Geubelle Date: Tue, 19 Mar 2019 15:50:46 +0000 Subject: [REF] web: correctly reuse read_group old datapoint Rev. odoo/odoo@5c6a7c9 made a change to reuse an old group datapoint when performing a read_group, instead of restoring *some* properties of the old group (so basically a `_.omit` instead of a `_.pick`). This is a bad idea as some properties were bound to the new datapoint (`evaluateModifiers` for example) so it doesn't make any sense to update the old datapoint with theses properties. closes odoo/odoo#31956 Signed-off-by: Aaron Bohy (aab) --- addons/web/static/src/js/views/basic/basic_model.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 d14b9074d87..e7ce88962ff 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -4255,22 +4255,22 @@ var BasicModel = AbstractModel.extend({ return g.res_id === newGroup.res_id && g.value === newGroup.value; }); if (oldGroup) { - // restore the internal state of the group delete self.localData[newGroup.id]; - var updatedProps = _.omit(newGroup, 'limit', 'isOpen', 'offset', 'id'); + // restore the internal state of the group + var updatedProps = _.pick(oldGroup, 'isOpen', 'offset', 'id'); if (options && options.onlyGroups || oldGroup.isOpen && newGroup.groupedBy.length) { // If the group is opened and contains subgroups, // also keep its data to keep internal state of // sub-groups // Also keep data if we only reload groups' own data - delete updatedProps.data; + updatedProps.data = oldGroup.data; } + _.extend(newGroup, updatedProps); // set the limit such that all previously loaded records // (e.g. if we are coming back to the kanban view from a // form view) are reloaded - oldGroup.limit = oldGroup.limit + oldGroup.loadMoreOffset; - _.extend(oldGroup, updatedProps); - newGroup = oldGroup; + newGroup.limit = oldGroup.limit + oldGroup.loadMoreOffset; + self.localData[newGroup.id] = newGroup; } else if (!newGroup.openGroupByDefault || openGroupCount >= self.OPEN_GROUP_LIMIT) { newGroup.isOpen = false; } else { -- cgit v1.2.3