Call autocompletion when setting record value

issue5712
review31371002
This commit is contained in:
Nicolas Évrard
2016-07-20 13:24:32 +07:00
parent 50afb5b695
commit b7a8f5b7d4
3 changed files with 20 additions and 5 deletions
+1
View File
@@ -1,3 +1,4 @@
* Call autocompletion when setting record value
* Limit readonly state for xxx2Many
* Simplify login with single database
* Show records names in relate window title
+14 -3
View File
@@ -645,6 +645,7 @@
var succeed = function(values, exception) {
if (exception === undefined) exception = false;
var id2value = {};
var promises = [];
values.forEach(function(e, i, a) {
id2value[e.id] = e;
});
@@ -664,9 +665,10 @@
}
delete value[key];
}
record.set(value);
promises.push(record.set(value));
}
}
return jQuery.when.apply(jQuery, promises);
}.bind(this);
var failed = function() {
var failed_values = [];
@@ -680,7 +682,7 @@
}
failed_values.push(default_values);
}
succeed(failed_values, true);
return succeed(failed_values, true);
};
this.group.prm = prm.then(succeed, failed);
return this.group.prm;
@@ -689,6 +691,7 @@
var name, value;
var rec_named_fields = ['many2one', 'one2one', 'reference'];
var later = {};
var promises = [];
for (name in values) {
if (!values.hasOwnProperty(name)) {
continue;
@@ -728,6 +731,14 @@
this.model.fields[name].set(this, value);
this._loaded[name] = true;
}
for (var fname in this.model.fields) {
var field = this.model.fields[fname];
if (field.description.autocomplete &&
field.description.autocomplete.length > 0) {
promises.push(this.do_autocomplete(fname));
}
}
return jQuery.when.apply(jQuery, promises);
},
get: function() {
var value = {};
@@ -1840,7 +1851,7 @@
promises.push(new_record.set_default(vals, false));
group.add(new_record);
} else {
new_record.set(vals);
promises.push(new_record.set(vals));
group.push(new_record);
}
});
+5 -2
View File
@@ -613,14 +613,17 @@
}.bind(this));
};
var set_preferences = function(preferences) {
var prm;
this.screen.current_record.cancel();
this.screen.current_record.set(preferences);
prm = this.screen.current_record.set(preferences);
this.screen.current_record.id =
this.screen.model.session.user_id;
this.screen.current_record.validate(null, true).then(
prm.then(function() {
this.screen.current_record.validate(null, true).then(
function() {
this.screen.display(true);
}.bind(this));
}.bind(this));
dialog.body.append(this.screen.screen_container.el);
this.el.modal('show');
};