From 4f19f29a09c1f6779045aa1b7fb53bc986a607f3 Mon Sep 17 00:00:00 2001 From: "Habib (ayh)" Date: Wed, 11 Aug 2021 11:51:06 +0000 Subject: [PATCH] [IMP] base: use helper methods for implied groups In this PR, we add a helper method to add/remove implied groups - update the base to use these instead Task 2610735 --- odoo/addons/base/models/res_config.py | 5 ++--- odoo/addons/base/models/res_users.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/odoo/addons/base/models/res_config.py b/odoo/addons/base/models/res_config.py index c67419308be..3642bc11280 100644 --- a/odoo/addons/base/models/res_config.py +++ b/odoo/addons/base/models/res_config.py @@ -577,10 +577,9 @@ class ResConfigSettings(models.TransientModel, ResConfigModuleInstallationMixin) if self[name] == current_settings[name]: continue if int(self[name]): - groups.write({'implied_ids': [Command.link(implied_group.id)]}) + groups._apply_group(implied_group) else: - groups.write({'implied_ids': [Command.unlink(implied_group.id)]}) - implied_group.write({'users': [Command.unlink(user.id) for user in groups.users]}) + groups._remove_group(implied_group) # config fields: store ir.config_parameters IrConfigParameter = self.env['ir.config_parameter'].sudo() diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 3317b660ca2..b85bf7fc699 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -1091,6 +1091,21 @@ class GroupsImplied(models.Model): self._check_one_user_type() return res + def _apply_group(self, implied_group): + """ Add the given group to the groups implied by the current group + :param implied_group: the implied group to add + """ + if implied_group not in self.implied_ids: + self.write({'implied_ids': [Command.link(implied_group.id)]}) + + def _remove_group(self, implied_group): + """ Remove the given group from the implied groups of the current group + :param implied_group: the implied group to remove + """ + if implied_group in self.implied_ids: + self.write({'implied_ids': [Command.unlink(implied_group.id)]}) + implied_group.write({'users': [Command.unlink(user.id) for user in self.users]}) + class UsersImplied(models.Model): _inherit = 'res.users'