summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-12-08 13:38:46 +0100
committerXavier Morel <xmo@openerp.com>2011-12-08 13:38:46 +0100
commit54f3f38957fc36fbb705524b99cc2af0b5aceeca (patch)
treed057f360bd11328ed5c200c7efeaf6ad6a5416b2 /addons/web/static/src
parent37dee90724b3d378f51bac26cff500949ce0480d (diff)
[IMP] ListView#save_row internals by taking advantage of Deferred#pipe
and FormView#do_save returning a deferred of course. bzr revid: xmo@openerp.com-20111208123846-dp3cgbsljl41q82k
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js15
-rw-r--r--addons/web/static/src/js/view_list_editable.js43
2 files changed, 27 insertions, 31 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 145be724d6c..15a402efb47 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -423,23 +423,22 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
self.on_invalid();
return $.Deferred().reject();
} else {
+ var save_deferral;
if (!self.datarecord.id) {
openerp.log("FormView(", self, ") : About to create", values);
- return self.dataset.create(values).pipe(function(r) {
+ save_deferral = self.dataset.create(values).pipe(function(r) {
return self.on_created(r, undefined, prepend_on_create);
- }).then(success);
+ }, null);
} else if (_.isEmpty(values)) {
openerp.log("FormView(", self, ") : Nothing to save");
- if (success) {
- success({});
- }
- return $.Deferred().resolve({}).promise();
+ save_deferral = $.Deferred().resolve({}).promise();
} else {
openerp.log("FormView(", self, ") : About to save", values);
- return self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
+ save_deferral = self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
return self.on_saved(r);
- }).then(success);
+ }, null);
}
+ return save_deferral.then(success);
}
} catch (e) {
console.error(e);
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index 155b183e11f..b2edf55b314 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -303,30 +303,27 @@ openerp.web.list_editable = function (openerp) {
save_row: function () {
//noinspection JSPotentiallyInvalidConstructorUsage
var self = this, done = $.Deferred();
- this.edition_form.do_save(function (result) {
- if (result.created && !self.edition_id) {
- self.records.add({id: result.result},
- {at: self.options.editable === 'top' ? 0 : null});
- self.edition_id = result.result;
- }
- var edited_record = self.records.get(self.edition_id);
+ return this.edition_form
+ .do_save(null, this.options.editable === 'top')
+ .pipe(function (result) {
+ if (result.created && !self.edition_id) {
+ self.records.add({id: result.result},
+ {at: self.options.editable === 'top' ? 0 : null});
+ self.edition_id = result.result;
+ }
+ var edited_record = self.records.get(self.edition_id);
- $.when(
- self.handle_onwrite(self.edition_id),
- self.cancel_pending_edition().then(function () {
- $(self).trigger('saved', [self.dataset]);
- })).then(function () {
- done.resolve({
- created: result.created || false,
- edited_record: edited_record
- });
- }, function () {
- done.reject();
- });
- }, this.options.editable === 'top').fail(function () {
- done.reject();
- });
- return done.promise();
+ return $.when(
+ self.handle_onwrite(self.edition_id),
+ self.cancel_pending_edition().then(function () {
+ $(self).trigger('saved', [self.dataset]);
+ })).pipe(function () {
+ return {
+ created: result.created || false,
+ edited_record: edited_record
+ };
+ }, null);
+ }, null);
},
/**
* If the current list is being edited, ensures it's saved