diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-02-24 12:09:56 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-04-11 19:44:38 +0200 |
| commit | 8d2336abb340d06c64ff62c398e4ec7f7eabe54c (patch) | |
| tree | 33f8408908f95fa68cdd4bc9ca1ecb65710b4354 /addons/web/static/src/js | |
| parent | 928af2b51fca5f3e120fbd7f74b77c27a104ba6a (diff) | |
[FIX] web: default_get on x2many may return a list of ids
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 69 |
1 files changed, 43 insertions, 26 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 12738a1235d..a66e3a9d3ab 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -500,38 +500,55 @@ var BasicModel = AbstractModel.extend({ }); record._changes[name] = x2manyList.id; var many2ones = {}; - _.each(result[name], function (command) { - if (command[0] === 0) { - // CREATE - var r = self._makeDataPoint({ + var r; + _.each(result[name], function (value) { + if (_.isArray(value)) { + // value is a command + if (value[0] === 0) { + // CREATE + r = self._makeDataPoint({ + modelName: x2manyList.model, + context: x2manyList.context, + fields: field.relatedFields, + fieldAttrs: field.fieldAttrs, + }); + x2manyList._changes.push(r.id); + r._changes = value[2]; + + // this is necessary so the fields are initialized + for (var fieldName in value[2]) { + r.data[fieldName] = null; + } + + for (var name in r._changes) { + if (r.fields[name].type === 'many2one') { + var rec = self._makeDataPoint({ + context: r.context, + modelName: r.fields[name].relation, + data: {id: r._changes[name]} + }); + r._changes[name] = rec.id; + many2ones[name] = true; + } + } + } + if (value[0] === 6) { + // REPLACE_WITH + x2manyList._changes = []; + } + } else { + // value is an id + r = self._makeDataPoint({ modelName: x2manyList.model, context: x2manyList.context, fields: field.relatedFields, fieldAttrs: field.fieldAttrs, + res_id: value, }); - x2manyList._changes.push(r.id); - r._changes = command[2]; - - // this is necessary so the fields are initialized - for (var fieldName in command[2]) { - r.data[fieldName] = null; - } - - for (var name in r._changes) { - if (r.fields[name].type === 'many2one') { - var rec = self._makeDataPoint({ - context: r.context, - modelName: r.fields[name].relation, - data: {id: r._changes[name]} - }); - r._changes[name] = rec.id; - many2ones[name] = true; - } + if (!x2manyList._changes) { + x2manyList._changes = []; } - } - if (command[0] === 6) { - // REPLACE_WITH - x2manyList._changes = []; + x2manyList._changes.push(r.id); } }); |
