[MERGE] Forward-port of latest saas-4 fixes, up to 0452851
[odoo/odoo.git] / addons / web / static / src / js / view_form.js
index ffe9d26..a4ecc4e 100644 (file)
@@ -2596,6 +2596,7 @@ instance.web.form.FieldCharDomain = instance.web.form.AbstractField.extend(insta
         this.$('.select_records').on('click', self.on_click);
     },
     on_click: function(ev) {
+        event.preventDefault();
         var self = this;
         var model = this.options.model || this.field_manager.get_field_value(this.options.model_field);
         this.pop = new instance.web.form.SelectCreatePopup(this);
@@ -2614,15 +2615,14 @@ instance.web.form.FieldCharDomain = instance.web.form.AbstractField.extend(insta
                 });
             }
             else {
-                var domain = ["id", "in", element_ids];
+                var domain = [["id", "in", element_ids]];
                 var domain_done = $.Deferred().resolve(domain);
             }
             $.when(domain_done).then(function (domain) {
                 var domain = self.pop.dataset.domain.concat(domain || []);
-                self.set_value(JSON.stringify(domain))
+                self.set_value(domain);
             });
         });
-        event.preventDefault();
     },
 });
 
@@ -4463,7 +4463,11 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
             else
                 return $.when();
         }).done(function () {
-            if (!self.o2m.options.reload_on_button) {
+            var ds = self.o2m.dataset;
+            var cached_records = _.any([ds.to_create, ds.to_delete, ds.to_write], function(value) {
+                return value.length;
+            });
+            if (!self.o2m.options.reload_on_button && !cached_records) {
                 self.handle_button(name, id, callback);
             }else {
                 self.handle_button(name, id, function(){