Convert negative id value as None when set by the client

Domain inversion may force a unique value based on the default value from
PYSON evaluation. In such case it means that no record can be set.

Closes #12799
(grafted from 48463dae759ea1473b258ed905ba2c15fe96e10c)

--HG--
branch : 6.0
This commit is contained in:
Cédric Krier
2023-12-17 23:39:16 +01:00
parent bcd5cc0588
commit 7614b407ee
2 changed files with 6 additions and 0 deletions
+4
View File
@@ -2073,6 +2073,10 @@
rec_name = '';
}
}
if ((value < 0) && (this.name != record.group.parent_name)) {
value = null;
rec_name = '';
}
Sao.setdefault(
record._values, this.name + '.', {}).rec_name = rec_name;
Sao.field.Many2One._super.set_client.call(this, record, value,
@@ -490,6 +490,8 @@ class M2OField(Field):
self.name + '.', {}).get('rec_name', '')
else:
rec_name = ''
if value and value < 0 and self.name != record.parent_name:
value, rec_name = None, ''
record.value.setdefault(self.name + '.', {})['rec_name'] = rec_name
super(M2OField, self).set_client(record, value,
force_change=force_change)