57 lines
1.9 KiB
Python
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.")
|
|
)
|