[IMP] FormView: on_record_loaded returns a promise
bzr revid: fme@openerp.com-20111117124319-61ruoa9g8we1a438
This commit is contained in:
parent
d673d7325c
commit
c4a10281e4
|
@ -155,6 +155,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_record_loaded: function(record) {
|
on_record_loaded: function(record) {
|
||||||
|
var self = this,
|
||||||
|
deferred_stack = $.Deferred.queue();
|
||||||
if (!record) {
|
if (!record) {
|
||||||
throw("Form: No record received");
|
throw("Form: No record received");
|
||||||
}
|
}
|
||||||
|
@ -175,30 +177,34 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
for (var f in this.fields) {
|
for (var f in this.fields) {
|
||||||
var field = this.fields[f];
|
var field = this.fields[f];
|
||||||
field.dirty = false;
|
field.dirty = false;
|
||||||
field.set_value(this.datarecord[f] || false);
|
deferred_stack.push($.when(field.set_value(this.datarecord[f] || false)).then(function() {
|
||||||
field.validate();
|
field.validate();
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
if (!record.id) {
|
deferred_stack.push('force resolution if no fields');
|
||||||
// New record: Second pass in order to trigger the onchanges
|
return deferred_stack.then(function() {
|
||||||
this.show_invalid = false;
|
if (!record.id) {
|
||||||
for (var f in record) {
|
// New record: Second pass in order to trigger the onchanges
|
||||||
var field = this.fields[f];
|
self.show_invalid = false;
|
||||||
if (field) {
|
for (var f in record) {
|
||||||
field.dirty = true;
|
var field = self.fields[f];
|
||||||
this.do_onchange(field);
|
if (field) {
|
||||||
|
field.dirty = true;
|
||||||
|
self.do_onchange(field);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
self.on_form_changed();
|
||||||
this.on_form_changed();
|
self.initial_mutating_lock.resolve();
|
||||||
this.initial_mutating_lock.resolve();
|
self.show_invalid = true;
|
||||||
this.show_invalid = true;
|
self.do_update_pager(record.id == null);
|
||||||
this.do_update_pager(record.id == null);
|
if (self.sidebar) {
|
||||||
if (this.sidebar) {
|
self.sidebar.attachments.do_update();
|
||||||
this.sidebar.attachments.do_update();
|
}
|
||||||
}
|
if (self.default_focus_field && !self.embedded_view) {
|
||||||
if (this.default_focus_field && !this.embedded_view) {
|
self.default_focus_field.focus();
|
||||||
this.default_focus_field.focus();
|
}
|
||||||
}
|
});
|
||||||
},
|
},
|
||||||
on_form_changed: function() {
|
on_form_changed: function() {
|
||||||
for (var w in this.widgets) {
|
for (var w in this.widgets) {
|
||||||
|
|
Loading…
Reference in New Issue