bemade-addons/bemade_sports_clinic/models/res_partner.py
Denis Durepos d2286d136e feat: Update bemade_sports_clinic to v18.0.2.0.0 with comprehensive activity management
- Added integrated mail.activity system for task management
- Implemented portal access to activities for treatment professionals
- Added activity creation, completion, and reassignment functionality
- Enhanced player management with Canadian address validation
- Improved injury tracking with parental consent and document attachments
- Implemented layered security architecture (ACL + Record Rules + Controller filtering)
- Added French Canadian (fr_CA) localization support
- Enhanced portal UI with activity counts and navigation
- Implemented RPC security protection with buddy method pattern
- Added comprehensive demo data and integration features
- Updated manifest to reflect all new capabilities and improvements
2025-08-12 09:23:05 -04:00

64 lines
2.1 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"
)
# Boolean field to identify venues
is_venue = fields.Boolean(
string='Is Venue',
default=False,
help='Check this box if this contact represents a venue/location'
)
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.")
)