summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2017-03-09 12:44:40 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commitf0cfe7c174307009575661d8ebe4c2e5d84c1768 (patch)
tree29bfae6a09681ab077e28d1a276aabc8762d52a0 /addons/web/static/src/js
parent454b21538917558cfb71c0b98bf49a1d8efa7eee (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.js9
-rw-r--r--addons/web/static/src/js/views/basic/basic_view.js8
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);
},