45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from odoo import models, fields, api, _, Command
|
|
|
|
|
|
class User(models.Model):
|
|
_inherit = "res.users"
|
|
|
|
is_treatment_professional = fields.Boolean(
|
|
compute="_compute_is_treatment_professional", store=True
|
|
)
|
|
|
|
accessible_team_ids = fields.Many2many(
|
|
comodel_name="sports.team",
|
|
compute="_compute_accessible_team_ids",
|
|
inverse="_inverse_accessible_team_ids",
|
|
)
|
|
|
|
@api.depends("groups_id")
|
|
def _compute_is_treatment_professional(self):
|
|
for rec in self:
|
|
rec.is_treatment_professional = rec.has_group(
|
|
"bemade_sports_clinic.group_sports_clinic_treatment_professional"
|
|
)
|
|
|
|
def _compute_accessible_team_ids(self):
|
|
for rec in self:
|
|
rec.accessible_team_ids = rec.partner_id.teams_served_ids
|
|
|
|
def _inverse_accessible_team_ids(self):
|
|
for rec in self:
|
|
removed_teams = rec.partner_id.teams_served_ids - rec.accessible_team_ids
|
|
added_teams = rec.accessible_team_ids - rec.partner_id.teams_served_ids
|
|
removed_teams = rec.partner_id.teams_served_ids.filtered(
|
|
lambda team: team in removed_teams
|
|
)
|
|
removed_teams.remove_access(self)
|
|
self.env["sports.team.staff"].create(
|
|
[
|
|
{
|
|
"team_id": team.id,
|
|
"partner_id": rec.partner_id.id,
|
|
"role": "other",
|
|
}
|
|
for team in added_teams
|
|
]
|
|
)
|