mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 10:12:05 +02:00
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
# Copyright (C) 2022 - Today: GRAP (http://www.grap.coop)
|
|
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import logging
|
|
|
|
from odoo import api, models
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ResGroups(models.Model):
|
|
_inherit = "res.groups"
|
|
|
|
def _get_exclusive_groups_data(self):
|
|
return {
|
|
"account.group_show_line_subtotals_tax_excluded": "Technical / Tax display B2B",
|
|
"account.group_show_line_subtotals_tax_included": "Technical / Tax display B2C",
|
|
"base.group_user": "User types / Access Rights",
|
|
"base.group_portal": "User types / Portal",
|
|
"base.group_public": "User types / Public",
|
|
}
|
|
|
|
@api.model
|
|
def _get_exclusive_groups(self):
|
|
"""Return specific groups that don't have to be applied to users
|
|
that are flagged 'Member of all Groups'
|
|
to avoid errors (For exemple B2B / B2C that are exclusive)
|
|
"""
|
|
return self.browse(
|
|
[
|
|
self.env.ref(xml_id, False).id
|
|
for xml_id in self._get_exclusive_groups_data().keys()
|
|
if self.env.ref(xml_id, False)
|
|
]
|
|
)
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
ResUsers = self.env["res.users"]
|
|
new_groups = super().create(vals_list)
|
|
for new_group in new_groups:
|
|
# At the creation of the groups, the group doesn't have xml_id yet
|
|
# So we base the exclusion on the display name
|
|
if new_group.display_name not in self._get_exclusive_groups_data().values():
|
|
ResUsers.add_all_groups(groups=new_group)
|
|
return new_groups
|