From 4586b876f273181b57f3f3fe4b0dce2a2d26b27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Wed, 14 Mar 2018 10:51:30 +0100 Subject: [FIX] web: unselect current row before changing page The issue here is quite simple. If we are editing a multipage one2many field, then we click on the pager, we need to properly unselect the current row. If we do not do that, then we can enter invalid data. For example, assume that there is a readonly field. We click on add, it creates a (virtual) record with no value for that field. When we click on the pager, we select the next page, and bypass all validation. --- addons/web/static/src/js/fields/relational_fields.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src/js/fields/relational_fields.js') diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 5856b59455a..aa71fca9c25 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -876,10 +876,15 @@ var FieldX2Many = AbstractField.extend({ this.pager = new Pager(this, this.value.count, this.value.offset + 1, this.value.limit, { single_page_hidden: true, withAccessKey: false, + validate: function () { + var isList = self.view.arch.tag === 'tree'; + // TODO: we should have some common method in the basic renderer... + return isList ? self.renderer.unselectRow() : $.when(); + }, }); this.pager.on('pager_changed', this, function (new_state) { - this.trigger_up('load', { - id: this.value.id, + self.trigger_up('load', { + id: self.value.id, limit: new_state.limit, offset: new_state.current_min - 1, on_success: function (value) { -- cgit v1.2.3