[imp] made o2m capable of giving a correct value for on_change

bzr revid: nicolas.vanhoren@openerp.com-20110629162136-fmg79kt6549rd9gx
This commit is contained in:
niv-openerp 2011-06-29 18:21:36 +02:00
parent 6df623519b
commit b76fa13dc7
1 changed files with 18 additions and 2 deletions

View File

@ -181,11 +181,10 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
args.push(argument_replacement[field]);
return;
} else if (self.fields[field]) {
var value = self.fields[field].get_value();
var value = self.fields[field].get_on_change_value();
args.push(value == null ? false : value);
return;
} else {
debugger;
var splitted = field.split('.');
if (splitted.length > 1 && _.trim(splitted[0]) === "parent" && self.dataset.parent_view) {
if (parent_fields === null) {
@ -748,6 +747,9 @@ openerp.base.form.Field = openerp.base.form.Widget.extend({
get_value: function() {
return this.value;
},
get_on_change_value: function() {
return this.get_value();
},
update_dom: function() {
this._super.apply(this, arguments);
this.$element.toggleClass('disabled', this.readonly);
@ -1540,6 +1542,20 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
this.dataset.to_delete, function(x) {
return commands['delete'](x.id);}));
},
get_on_change_value: function() {
var self;
return _.map(this.dataset.ids, function(id) {
var values = _.detect(self.dataset.cache, function(x) {return x.id === id});
if (values) {
values = _.clone(values);
delete values["id"];
return values;
} else {
console.info("trying to get value in a o2m before that value is loaded");
return {};
}
});
},
validate: function() {
this.invalid = false;
// TODO niv