diff options
| author | Christophe Matthieu <chm@odoo.com> | 2017-03-09 12:44:40 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-04-11 19:44:38 +0200 |
| commit | f0cfe7c174307009575661d8ebe4c2e5d84c1768 (patch) | |
| tree | 29bfae6a09681ab077e28d1a276aabc8762d52a0 /addons/web/static/src/js | |
| parent | 454b21538917558cfb71c0b98bf49a1d8efa7eee (diff) | |
[FIX] web: load missing fields when opening form view dialogs
Problem was that sub form field has usually more fields than the list view in
one2many, so we have to load missing fields
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 9 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_view.js | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index e581b222417..7b57f16dd84 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -68,17 +68,20 @@ return AbstractRenderer.extend({ var field = record.fields[name]; var value = record.data[name]; result[name] = value; - if (field.type === 'many2one') { + if (!value) { + return; + } + else if (field.type === 'many2one') { result[name] = value.data ? value.data.id || false : false; } - if (field.type === 'one2many' || field.type === 'many2many') { + else if (field.type === 'one2many' || field.type === 'many2many') { if (value) { result[name] = _.pluck(value.data, 'res_id'); } else { result[name] = []; } } - if (field.type === 'boolean') { + else if (field.type === 'boolean') { // we want an explicit false value, not null if it is unset result[name] = value || false; } diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js index aea0b88dcf3..d8e41b99835 100644 --- a/addons/web/static/src/js/views/basic/basic_view.js +++ b/addons/web/static/src/js/views/basic/basic_view.js @@ -115,7 +115,13 @@ var BasicView = AbstractView.extend({ */ _loadData: function () { if (this.recordID) { - return $.when(this.recordID); + var record = this.model.get(this.recordID); + var fieldNames = _.difference(record.fieldNames, Object.keys(record.data)); + if (fieldNames.length && !this.model.isNew(record.id)) { + return this.model.reload(this.recordID, {fieldNames: fieldNames}); + } else { + return $.when(this.recordID); + } } return this._super.apply(this, arguments); }, |
