From 121cd0d6084cb28787905349e2d54a9fe8c7c473 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Thu, 22 Sep 2022 14:16:47 +0000 Subject: [PATCH] [IMP] base: Synchronize template user new groups with existing users Purpose ======= The template user groups are applied to new users, but this is not the case for existing users. To harmonize the flow, the added groups to the default user template are synchronized with the existing users. closes odoo/odoo#101086 X-original-commit: aefb05eb497a8a16a9359432f41024c09552ed70 Related: odoo/enterprise#31759 Signed-off-by: Yannick Tivisse (yti) --- odoo/addons/base/models/res_users.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index d21bd902543..517455f805d 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -593,7 +593,20 @@ class Users(models.Model): # safe fields only, so we write as super-user to bypass access rights self = self.sudo().with_context(binary_field_real_user=self.env.user) + if 'groups_id' in values: + default_user = self.env.ref('base.default_user', raise_if_not_found=False) + if default_user and default_user in self: + old_groups = default_user.groups_id + res = super(Users, self).write(values) + + if 'groups_id' in values and default_user and default_user in self: + # Sync added groups on default user template to existing users + added_groups = default_user.groups_id - old_groups + if added_groups: + internal_users = self.env.ref('base.group_user').users - default_user + internal_users.write({'groups_id': [Command.link(gid) for gid in added_groups.ids]}) + if 'company_id' in values: for user in self: # if partner is global we keep it that way