[fix] race condition in m2m
bzr revid: nicolas.vanhoren@openerp.com-20111026152305-t7rg7mn37h91swra
This commit is contained in:
parent
08ef807c3b
commit
5bc7011b52
|
@ -2232,7 +2232,8 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
|
||||||
init: function(view, node) {
|
init: function(view, node) {
|
||||||
this._super(view, node);
|
this._super(view, node);
|
||||||
this.list_id = _.uniqueId("many2many");
|
this.list_id = _.uniqueId("many2many");
|
||||||
this.is_started = $.Deferred();
|
this.is_loaded = $.Deferred();
|
||||||
|
this.initial_is_loaded = this.is_loaded;
|
||||||
this.is_setted = $.Deferred();
|
this.is_setted = $.Deferred();
|
||||||
},
|
},
|
||||||
start: function() {
|
start: function() {
|
||||||
|
@ -2258,9 +2259,7 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
|
||||||
this._super(value);
|
this._super(value);
|
||||||
this.dataset.set_ids(value);
|
this.dataset.set_ids(value);
|
||||||
var self = this;
|
var self = this;
|
||||||
$.when(this.is_started).then(function() {
|
self.reload_content();
|
||||||
self.list_view.reload_content();
|
|
||||||
});
|
|
||||||
this.is_setted.resolve();
|
this.is_setted.resolve();
|
||||||
},
|
},
|
||||||
get_value: function() {
|
get_value: function() {
|
||||||
|
@ -2279,7 +2278,7 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
|
||||||
this.list_view.m2m_field = this;
|
this.list_view.m2m_field = this;
|
||||||
var loaded = $.Deferred();
|
var loaded = $.Deferred();
|
||||||
this.list_view.on_loaded.add_last(function() {
|
this.list_view.on_loaded.add_last(function() {
|
||||||
self.is_started.resolve();
|
self.initial_is_loaded.resolve();
|
||||||
loaded.resolve();
|
loaded.resolve();
|
||||||
});
|
});
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
@ -2287,16 +2286,22 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
|
||||||
}, 0);
|
}, 0);
|
||||||
return loaded;
|
return loaded;
|
||||||
},
|
},
|
||||||
|
reload_content: function() {
|
||||||
|
var self = this;
|
||||||
|
this.is_loaded = this.is_loaded.pipe(function() {
|
||||||
|
return self.list_view.reload_content();
|
||||||
|
});
|
||||||
|
},
|
||||||
update_dom: function() {
|
update_dom: function() {
|
||||||
this._super.apply(this, arguments);
|
this._super.apply(this, arguments);
|
||||||
var self = this;
|
var self = this;
|
||||||
if (this.previous_readonly !== this.readonly) {
|
if (this.previous_readonly !== this.readonly) {
|
||||||
this.previous_readonly = this.readonly;
|
this.previous_readonly = this.readonly;
|
||||||
if (this.list_view) {
|
if (this.list_view) {
|
||||||
$.when(this.is_started).then(function() {
|
this.is_loaded = this.is_loaded.pipe(function() {
|
||||||
self.list_view.stop();
|
self.list_view.stop();
|
||||||
$.when(self.load_view()).then(function() {
|
return $.when(self.load_view()).then(function() {
|
||||||
self.list_view.reload_content();
|
self.reload_content();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue