summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorDenis Ledoux <dle@odoo.com>2015-01-15 14:43:32 +0100
committerDenis Ledoux <dle@odoo.com>2015-01-15 14:43:32 +0100
commit87dd06c941ac0dd7a42e528900938603aca891cb (patch)
tree14531c9dd9e7332c8b990d4dc26a473200c3df0a /addons/web/static/src/js
parent698981eccb9cf0c67c7a7e59dbef41da02391a18 (diff)
parent8c150c609eea3b2745339000e8257c6ef40c8ea5 (diff)
[MERGE] forward port of branch saas-3 up to 8c150c6
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/view_form.js30
-rw-r--r--addons/web/static/src/js/view_list_editable.js5
2 files changed, 26 insertions, 9 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 076154b71ef..1ea2ddb4566 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -3516,7 +3516,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
reinit_value: function(val) {
this.internal_set_value(val);
this.floating = false;
- if (this.is_started)
+ if (this.is_started && !this.no_rerender)
this.render_value();
},
initialize_field: function() {
@@ -3767,7 +3767,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
}
if (! no_recurse) {
var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.build_context());
- this.alive(dataset.name_get([self.get("value")])).done(function(data) {
+ var def = this.alive(dataset.name_get([self.get("value")])).done(function(data) {
if (!data[0]) {
self.do_warn(_t("Render"), _t("No value found for the field "+self.field.string+" for value "+self.get("value")));
return;
@@ -3780,6 +3780,9 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
self.display_value["" + self.get("value")] = self.display_value_backup["" + self.get("value")];
self.render_value(true);
});
+ if (this.view && this.view.render_value_defs){
+ this.view.render_value_defs.push(def);
+ }
}
},
display_string: function(str) {
@@ -4263,7 +4266,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
this.dataset.index = 0;
}
this.trigger_on_change();
- if (this.is_started) {
+ if (this.is_started && !this.no_rerender) {
return self.reload_current_view();
} else {
return $.when();
@@ -4408,12 +4411,19 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
return true;
}
var r;
- return _.every(this.records.records, function(record){
+ if (_.isEmpty(this.records.records)){
+ return true;
+ }
+ current_values = {};
+ _.each(this.editor.form.fields, function(field){
+ field._inhibit_on_change_flag = true;
+ field.no_rerender = true;
+ current_values[field.name] = field.get('value');
+ });
+ var valid = _.every(this.records.records, function(record){
r = record;
_.each(self.editor.form.fields, function(field){
- field._inhibit_on_change_flag = true;
- field.internal_set_value(r.attributes[field.name]);
- field._inhibit_on_change_flag = false;
+ field.set_value(r.attributes[field.name]);
});
return _.every(self.editor.form.fields, function(field){
field.process_modifiers();
@@ -4421,6 +4431,12 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
return field.is_valid();
});
});
+ _.each(this.editor.form.fields, function(field){
+ field.set('value', current_values[field.name]);
+ field._inhibit_on_change_flag = false;
+ field.no_rerender = false;
+ });
+ return valid;
},
do_add_record: function () {
if (this.editable()) {
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index 62a0717d374..d8358f69865 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -231,8 +231,9 @@
this.records.add(record, {
at: this.prepends_on_create() ? 0 : null});
}
-
- return this.ensure_saved().then(function () {
+ return this.ensure_saved().then(function(){
+ return $.when.apply(null, self.editor.form.render_value_defs);
+ }).then(function () {
var $recordRow = self.groups.get_row_for(record);
var cells = self.get_cells_for($recordRow);
var fields = {};