diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-09-10 15:09:40 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-09-11 11:07:07 +0200 |
| commit | 9c7d3662293ecb0a0c3014b51c82b08d2e0b1e2e (patch) | |
| tree | 56122bd451c41dddf429ac4b0d74744f3b07d280 /addons/web/static/src/js/views | |
| parent | 60898513bd94c3a4cc4ffdff7d852a5c89592df4 (diff) | |
[FIX] web: add a check to detect server convert_to_onchange errors.
Diffstat (limited to 'addons/web/static/src/js/views')
| -rw-r--r-- | addons/web/static/src/js/views/form_relational_widgets.js | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js index 9b247d529fc..086713ad666 100644 --- a/addons/web/static/src/js/views/form_relational_widgets.js +++ b/addons/web/static/src/js/views/form_relational_widgets.js @@ -581,39 +581,40 @@ var AbstractManyField = common.AbstractField.extend({ _.each(command_list, function(command) { self.mutex.exec(function() { var id = command[1]; - switch (command[0]) { - case COMMANDS.CREATE: - var data = _.clone(command[2]); - delete data.id; - return dataset.create(data, internal_options).then(function (id) { - dataset.ids.push(id); - res = id; - }); - case COMMANDS.UPDATE: - return dataset.write(id, command[2], internal_options).then(function () { - if (dataset.ids.indexOf(id) === -1) { + if (!id || _.isString(id) || _.isNumber(id)) { + switch (command[0]) { + case COMMANDS.CREATE: + var data = _.clone(command[2]); + delete data.id; + return dataset.create(data, internal_options).then(function (id) { dataset.ids.push(id); res = id; + }); + case COMMANDS.UPDATE: + return dataset.write(id, command[2], internal_options).then(function () { + if (dataset.ids.indexOf(id) === -1) { + dataset.ids.push(id); + res = id; + } + }); + case COMMANDS.FORGET: + return dataset.unlink([id]); + case COMMANDS.DELETE: + return dataset.unlink([id]); + case COMMANDS.LINK_TO: + if (dataset.ids.indexOf(id) === -1) { + return dataset.add_ids([id], internal_options); } - }); - case COMMANDS.FORGET: - return dataset.unlink([id]); - case COMMANDS.DELETE: - return dataset.unlink([id]); - case COMMANDS.LINK_TO: - if (dataset.ids.indexOf(id) === -1) { - return dataset.add_ids([id], internal_options); - } - return; - case COMMANDS.DELETE_ALL: - return dataset.reset_ids([], {keep_read_data: true}); - case COMMANDS.REPLACE_WITH: - dataset.ids = []; - return dataset.alter_ids(command[2], internal_options); - default: - throw new Error("send_commands to '"+self.name+"' receive a non command value." + - "\n" + JSON.stringify(command_list)); + return; + case COMMANDS.DELETE_ALL: + return dataset.reset_ids([], {keep_read_data: true}); + case COMMANDS.REPLACE_WITH: + dataset.ids = []; + return dataset.alter_ids(command[2], internal_options); + } } + throw new Error("send_commands to '"+self.name+"' receive a non command value." + + "\n" + JSON.stringify(command_list)); }); }); |
