diff options
| author | Géry Debongnie <ged@odoo.com> | 2017-07-06 09:34:25 +0200 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-07-06 15:04:04 +0200 |
| commit | 56dae80994ceb27a80714bed78f4e17450151831 (patch) | |
| tree | 514a351b1b0b969ebc60b656947982afff0cd7e5 /addons/web/static/src/js/fields | |
| parent | 7dc731db8308febb6426ee4c6d61b2a80d40c021 (diff) | |
[FIX] web: prevent crash with invisible x2m and onchanges
When an invisible x2many field is modified by an onchange, we had a
crash because the reset function did not return a deferred in that case.
This happens because the signature of _render in AbstractField allow for
an undefined return value, but the reset method should return a
deferred.
This was an issue for example in stock: editing the
pack_operation_product_ids one2many field in a stock.picking could
trigger an onchange on another invisible one2many (with no inline views).
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/abstract_field.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js index 52e0aef77e4..4ae4eec9c05 100644 --- a/addons/web/static/src/js/fields/abstract_field.js +++ b/addons/web/static/src/js/fields/abstract_field.js @@ -273,7 +273,7 @@ var AbstractField = Widget.extend({ */ reset: function (record, event) { this._reset(record, event); - return this._render(); + return this._render() || $.when(); }, //-------------------------------------------------------------------------- diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index df7f018369d..4ddc674255a 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -684,7 +684,7 @@ var FieldX2Many = AbstractField.extend({ * * @override * @private - * @returns {Deferred} + * @returns {Deferred|undefined} */ _render: function () { if (!this.view) { |
