summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2015-09-10 15:09:40 +0200
committerChristophe Matthieu <chm@odoo.com>2015-09-11 11:07:07 +0200
commit9c7d3662293ecb0a0c3014b51c82b08d2e0b1e2e (patch)
tree56122bd451c41dddf429ac4b0d74744f3b07d280
parent60898513bd94c3a4cc4ffdff7d852a5c89592df4 (diff)
[FIX] web: add a check to detect server convert_to_onchange errors.
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js59
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));
});
});