diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-01-10 15:41:13 +0100 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-01-10 15:41:13 +0100 |
| commit | 3dbb95ec2bb3d49a9ff3d190f5373c6b8b34d9e7 (patch) | |
| tree | 145809a5a0d784c2f5bea4ce40b32f806768b749 /addons/web/static/src/js/view_form.js | |
| parent | f0c294e58423365eb5e7d860d85f81365722a43a (diff) | |
[imp] refactored a part of form view to use Mutex
bzr revid: nicolas.vanhoren@openerp.com-20120110144113-1x67nu7u9q51g7ny
Diffstat (limited to 'addons/web/static/src/js/view_form.js')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 0addb6d3b02..cc639a4b027 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -50,8 +50,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# _.defaults(this.options, { "not_interactible_on_create": false }); - this.mutating_lock = $.Deferred(); - this.initial_mutating_lock = this.mutating_lock; + this.is_initialized = $.Deferred(); + this.mutating_mutex = new $.Mutex(); this.on_change_lock = $.Deferred().resolve(); this.reload_lock = $.Deferred().resolve(); }, @@ -189,7 +189,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }); } self.on_form_changed(); - self.initial_mutating_lock.resolve(); + self.is_initialized.resolve(); self.show_invalid = true; self.do_update_pager(record.id == null); if (self.sidebar) { @@ -419,8 +419,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# var self = this; var action = function() { try { - if (!self.initial_mutating_lock.isResolved() && !self.initial_mutating_lock.isRejected()) - return; var form_invalid = false, values = {}, first_invalid_field = null; @@ -466,8 +464,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return $.Deferred().reject(); } }; - this.mutating_lock = this.mutating_lock.pipe(action, action); - return this.mutating_lock; + return this.mutating_mutex.exec(function() { + return self.is_initialized.pipe(action); + }); }, on_invalid: function() { var msg = "<ul>"; |
