bemade-addons/bemade_sports_clinic/models/res_partner.py
2025-05-29 21:35:47 -04:00

57 lines
1.9 KiB
Python

from odoo import models, fields, api, _
from odoo.exceptions import UserError
from odoo.exceptions import ValidationError
class Partner(models.Model):
_inherit = "res.partner"
owned_team_ids = fields.One2many(
comodel_name="sports.team", inverse_name="parent_id"
)
staff_ids = fields.One2many(
comodel_name="sports.team.staff", inverse_name="team_id"
)
team_staff_rel_ids = fields.One2many(
comodel_name="sports.team.staff",
inverse_name="partner_id",
string="Employer(s)",
help="The teams this person works for.",
)
teams_served_ids = fields.One2many(
comodel_name="sports.team",
compute="_compute_teams_served",
inverse="_inverse_teams_served",
)
patient_ids = fields.One2many(
comodel_name="sports.patient", inverse_name="partner_id"
)
def write(self, vals):
if (
self.patient_ids
and "name" in vals
and not self._context.get("patient_update")
):
raise ValidationError(
_("To change a patient's name, change it from the patient form.")
)
return super().write(vals)
@api.depends("team_staff_rel_ids.team_id")
def _compute_teams_served(self):
for rec in self:
rec.teams_served_ids = rec.team_staff_rel_ids.mapped("team_id")
@api.depends("team_staff_rel_ids.team_id")
def _inverse_teams_served(self):
for rec in self:
for staff in rec.team_staff_rel_ids:
if staff.team_id not in rec.teams_served_ids:
staff.unlink()
served_teams = rec.team_staff_rel_ids.mapped("team_id")
for team in rec.teams_served_ids:
if team not in served_teams:
raise UserError(
_("To add a staff member to a team, use the team view.")
)