From 75e986a4a22d9987d15055d4e60a31e5ac5f5046 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Thu, 5 Sep 2024 08:24:56 -0400 Subject: [PATCH] bemade_sport_clinic: improve facility for deactivating team staff --- bemade_sports_clinic/models/res_partner.py | 17 ++++++++++++++++- bemade_sports_clinic/models/sports_team.py | 1 + .../views/res_partner_views.xml | 11 ++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/bemade_sports_clinic/models/res_partner.py b/bemade_sports_clinic/models/res_partner.py index 2d7f4d1..99841ce 100644 --- a/bemade_sports_clinic/models/res_partner.py +++ b/bemade_sports_clinic/models/res_partner.py @@ -19,7 +19,9 @@ class Partner(models.Model): help="The teams this person works for.", ) teams_served_ids = fields.One2many( - comodel_name="sports.team", compute="_compute_teams_served" + comodel_name="sports.team", + compute="_compute_teams_served", + inverse="_inverse_teams_served", ) patient_ids = fields.One2many( comodel_name="sports.patient", inverse_name="partner_id" @@ -36,3 +38,16 @@ class Partner(models.Model): 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." + ) diff --git a/bemade_sports_clinic/models/sports_team.py b/bemade_sports_clinic/models/sports_team.py index 8a0cb53..2fd671d 100644 --- a/bemade_sports_clinic/models/sports_team.py +++ b/bemade_sports_clinic/models/sports_team.py @@ -126,6 +126,7 @@ class TeamStaff(models.Model): domain=[("is_company", "=", False)], ondelete="cascade", ) + active = fields.Boolean(related="partner_id.active") role = fields.Selection( selection=[ ("head_coach", "Head Coach"), diff --git a/bemade_sports_clinic/views/res_partner_views.xml b/bemade_sports_clinic/views/res_partner_views.xml index 5c810f2..961adea 100644 --- a/bemade_sports_clinic/views/res_partner_views.xml +++ b/bemade_sports_clinic/views/res_partner_views.xml @@ -12,7 +12,16 @@ string="Teams"/> + string="Teams Served"> + + + + + + + + +