From 4bd86b26ec2b50bd30d0a3d5d85d08c097c7a512 Mon Sep 17 00:00:00 2001 From: Sergi Almacellas Abellana Date: Wed, 1 May 2019 21:58:01 +0200 Subject: [PATCH] Return rejected promise when creation fails issue8168 review51631002 --- src/model.js | 7 ++++++- src/screen.js | 10 ++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/model.js b/src/model.js index 494a46315f..7d3a2bb7f3 100644 --- a/src/model.js +++ b/src/model.js @@ -513,7 +513,12 @@ if ((this.id < 0) || !jQuery.isEmptyObject(values)) { if (this.id < 0) { // synchronous call to avoid multiple creation - this.id = this.model.execute('create', [[values]], context, false)[0]; + try { + this.id = this.model.execute( + 'create', [[values]], context, false)[0]; + } catch (e) { + return jQuery.Deferred().reject(e); + } } else { if (!jQuery.isEmptyObject(values)) { context._timestamp = this.get_timestamp(); diff --git a/src/screen.js b/src/screen.js index 28420c4ddf..86a286eacf 100644 --- a/src/screen.js +++ b/src/screen.js @@ -1437,8 +1437,7 @@ } }.bind(this)); } - var dfd = jQuery.Deferred(); - prm.then(function(current_record) { + return prm.then(function(current_record) { if (path && current_record && current_record.id) { path.splice(-1, 1, [path[path.length - 1][0], current_record.id]); @@ -1446,12 +1445,7 @@ return this.group.get_by_path(path).then(function(record) { this.current_record = record; }.bind(this)); - }.bind(this)).then(function() { - this.display().always(dfd.resolve); - }.bind(this), function() { - this.display().always(dfd.reject); - }.bind(this)); - return dfd.promise(); + }.bind(this)).always(this.display.bind(this)); }, set_cursor: function(new_, reset_view) { if (!this.current_view) {