From aca8ae4217ebc179461143edae597ce588b80095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Fri, 1 Apr 2022 19:44:22 +0200 Subject: [PATCH 1/2] [FIX] web_widget_one2many_product_picker: Don't save in 'refresh' time --- .../static/src/js/views/One2ManyProductPicker/renderer.js | 6 ++++++ .../static/src/js/widgets/field_one2many_product_picker.js | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js index 6d18165bb..04d0e70ae 100644 --- a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js +++ b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js @@ -98,6 +98,9 @@ odoo.define( }, canBeUpdated: function() { + if (!this.getParent()) { + return false; + } var model = this.getParent().getBasicFieldParams().model; for (var widget of this.widgets) { if (!widget.state) { @@ -149,6 +152,9 @@ odoo.define( }, getWidgetsWithoutOnchange: function() { + if (!this.getParent()) { + return false; + } var model = this.getParent().getBasicFieldParams().model; return _.filter(this.widgets, function(item) { return ( diff --git a/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js b/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js index 63697420b..87ea2dfbe 100644 --- a/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js +++ b/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js @@ -810,6 +810,7 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun _saveDocument: function(ids_to_update) { var widgets = this.renderer.getWidgetsWithoutOnchange(); if ( + widgets === false || !_.isEmpty(this._ids_to_wait) || _.isEmpty(ids_to_update) || !_.isEmpty(widgets) @@ -1140,6 +1141,7 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun _onResumeAutoSave: function() { // Check if can resume if ( + !this._is_auto_save_paused || this.$(".oe_product_picker_quick_modif_price").is(":visible") || this.$(".oe_search_input").is(":focus") || this.$(".oe_flip_card.active").length @@ -1148,6 +1150,9 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun } if (this._need_resume_auto_save) { + if (this._auto_save_timeout) { + clearTimeout(this._auto_save_timeout); + } this._auto_save_timeout = setTimeout( this._saveDocument.bind(this), this.options.auto_save_delay, From 51b3ee10f5e54bbb86c90fc10177896a6a2e4233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Tue, 5 Apr 2022 19:24:19 +0200 Subject: [PATCH 2/2] [IMP] web_widget_one2many_product_picker: more detailed message error --- .../models/base.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/web_widget_one2many_product_picker/models/base.py b/web_widget_one2many_product_picker/models/base.py index 86a1cd305..970e7dc1b 100644 --- a/web_widget_one2many_product_picker/models/base.py +++ b/web_widget_one2many_product_picker/models/base.py @@ -31,21 +31,14 @@ class BaseModel(models.BaseModel): field_obj = self[relation_field] if field_obj: relation_id = relation_id.id - has_product = ( - self.search( - [ - (relation_field, "=", relation_id), - (product_field, "in", product_ids), - ], - count=True, - limit=1, - ) - != 0 + db_sol = self.search( + [(relation_field, "=", relation_id), (product_field, "in", product_ids)], + limit=1, ) - if has_product: + if db_sol: raise ValidationError( - _("Can't create the %s: Duplicated product! (Already in database)") - % relation + _("Can't create the %s: Duplicated product (%s)! (Already in database)") + % (relation, db_sol[product_field].display_name) ) @api.model_create_multi