summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-02-24 12:09:56 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commit8d2336abb340d06c64ff62c398e4ec7f7eabe54c (patch)
tree33f8408908f95fa68cdd4bc9ca1ecb65710b4354 /addons/web/static/src
parent928af2b51fca5f3e120fbd7f74b77c27a104ba6a (diff)
[FIX] web: default_get on x2many may return a list of ids
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js69
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);
}
});