[FIX] base: onchange2() for res.users dealing with reified group fields

closes odoo/odoo#124612

Related: odoo/enterprise#42445
Signed-off-by: Raphael Collet <rco@odoo.com>
This commit is contained in:
Raphael Collet
2023-06-13 12:49:25 +02:00
parent 578a6083e3
commit 7c17e2745a
+25
View File
@@ -1729,6 +1729,31 @@ class UsersView(models.Model):
)
return result
def onchange2(self, values, field_names, fields_spec):
reified_fnames = [fname for fname in fields_spec if is_reified_group(fname)]
if reified_fnames:
values = {key: val for key, val in values.items() if key != 'groups_id'}
values = self._remove_reified_groups(values)
if any(is_reified_group(fname) for fname in field_names):
field_names = [fname for fname in field_names if not is_reified_group(fname)]
field_names.append('groups_id')
fields_spec = {
field_name: field_spec
for field_name, field_spec in fields_spec.items()
if not is_reified_group(field_name)
}
fields_spec['groups_id'] = {}
result = super().onchange2(values, field_names, fields_spec)
if reified_fnames and 'groups_id' in result.get('value', {}):
self._add_reified_groups(reified_fnames, result['value'])
result['value'].pop('groups_id', None)
return result
def read(self, fields=None, load='_classic_read'):
# determine whether reified groups fields are required, and which ones
fields1 = fields or list(self.fields_get())