Set default value via domain inversion only when deferred operand is id
Other cases for deferred operand can not be deduced as unique for sure. Closes #14005
This commit is contained in:
+5
-14
@@ -1771,7 +1771,6 @@
|
||||
// XXX to remove once server domains are fixed
|
||||
value = null;
|
||||
}
|
||||
var setdefault = true;
|
||||
var original_domain;
|
||||
if (!jQuery.isEmptyObject(record.group.domain)) {
|
||||
original_domain = inversion.merge(record.group.domain);
|
||||
@@ -1779,20 +1778,12 @@
|
||||
original_domain = inversion.merge(domain);
|
||||
}
|
||||
var domain_readonly = original_domain[0] == 'AND';
|
||||
let setdefault;
|
||||
if (leftpart.contains('.')) {
|
||||
var recordpart = leftpart.split('.', 1)[0];
|
||||
var localpart = leftpart.split('.', 1)[1];
|
||||
var constraintfields = [];
|
||||
if (domain_readonly) {
|
||||
for (const leaf of inversion.localize_domain(
|
||||
original_domain.slice(1))) {
|
||||
constraintfields.push(leaf);
|
||||
}
|
||||
}
|
||||
if ((localpart != 'id') ||
|
||||
!~constraintfields.indexOf(recordpart)) {
|
||||
setdefault = false;
|
||||
}
|
||||
let localpart = leftpart.split('.').slice(1).join('.');
|
||||
setdefault = localpart == 'id';
|
||||
} else {
|
||||
setdefault = true;
|
||||
}
|
||||
if (setdefault && jQuery.isEmptyObject(pre_validate)) {
|
||||
this.set_client(record, value);
|
||||
|
||||
@@ -132,20 +132,16 @@ class Field(object):
|
||||
if value is False:
|
||||
# XXX to remove once server domains are fixed
|
||||
value = None
|
||||
setdefault = True
|
||||
if record.group.domain:
|
||||
original_domain = merge(record.group.domain)
|
||||
else:
|
||||
original_domain = merge(domain)
|
||||
domain_readonly = original_domain[0] == 'AND'
|
||||
if '.' in leftpart:
|
||||
recordpart, localpart = leftpart.split('.', 1)
|
||||
constraintfields = set()
|
||||
if domain_readonly:
|
||||
for leaf in localize_domain(original_domain[1:]):
|
||||
constraintfields.add(leaf[0])
|
||||
if localpart != 'id' or recordpart not in constraintfields:
|
||||
setdefault = False
|
||||
localpart = leftpart.split('.', 1)[1]
|
||||
setdefault = localpart == 'id'
|
||||
else:
|
||||
setdefault = True
|
||||
if setdefault and not pre_validate:
|
||||
self.set_client(record, value)
|
||||
state_attrs['domain_readonly'] = domain_readonly
|
||||
|
||||
Reference in New Issue
Block a user