From fdf6ccc46c294fa406f3ec4199414ca6d7ae812c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 27 Jul 2018 17:36:09 +0200 Subject: [PATCH] Reduce number of call to display in set_default issue7578 review66311002 --- src/model.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/model.js b/src/model.js index 3106d877d0..a917a934aa 100644 --- a/src/model.js +++ b/src/model.js @@ -357,9 +357,12 @@ this.model.execute('default_get', [added, this.context()]) .then(function(values) { new_.forEach(function(record) { - record.set_default(values); + record.set_default(values, true, false); }); - }); + this.root_group().screens.forEach(function(screen) { + return screen.display(); + }); + }.bind(this)); } }; array.destroy = function() { @@ -862,10 +865,13 @@ } return jQuery.when(); }, - set_default: function(values, validate) { + set_default: function(values, validate, display) { if (validate === undefined) { validate = true; } + if (display === undefined) { + display = true; + } var promises = []; var fieldnames = []; for (var fname in values) { @@ -893,10 +899,12 @@ return this.on_change(fieldnames).then(function() { return this.on_change_with(fieldnames).then(function() { var callback = function() { - return this.group.root_group().screens - .forEach(function(screen) { - return screen.display(); - }); + if (display) { + return this.group.root_group().screens + .forEach(function(screen) { + return screen.display(); + }); + } }.bind(this); if (validate) { return this.validate(null, true) @@ -1969,8 +1977,9 @@ var new_record = group.new_(false); if (default_) { // Don't validate as parent will validate - promises.push(new_record.set_default(vals, false)); - group.add(new_record); + promises.push(new_record.set_default( + vals, false, false)); + group.add(new_record, -1, false); } else { promises.push(new_record.set(vals)); group.push(new_record);