diff --git a/bemade_sports_clinic/__manifest__.py b/bemade_sports_clinic/__manifest__.py index 540fb08..99eee77 100644 --- a/bemade_sports_clinic/__manifest__.py +++ b/bemade_sports_clinic/__manifest__.py @@ -46,7 +46,7 @@ 'views/sports_clinic_menus.xml', 'views/patient_views.xml', ], - 'demo': [], + 'demo': ['data/demo/sports_clinic_demo_data.xml'], 'installable': True, 'auto_install': False, 'application': True, diff --git a/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml b/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml new file mode 100644 index 0000000..5c643a7 --- /dev/null +++ b/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml @@ -0,0 +1,118 @@ + + + + + Université de Montréal + C.P. 6128, succursale Centre-ville + Montréal + + + H3C 3J7 + +1 (514) 343-6111 + https://www.umontreal.ca + + + Carabins (Football masculin) + team + + https://carabins.umontreal.ca/football + + + Jean + Carabin + + 2001-08-23 + jean.carabin@edudiants.umontreal.ca + + + Rémi + Lafracture + + 2002-05-17 + remi.lafracture@edudiants.umontreal.ca + + + Carabins (Hockey féminin) + team + + https://carabins.umontreal.ca/football + + + Jeanne + Carabine + + 2001-08-23 + jeanne.carabine@edudiants.umontreal.ca + + + Rimée + Lafracture + + 2004-11-22 + rimee.lafracture@edudiants.umontreal.ca + + + Université Concordia + 1455 boulevard de Maisonneuve W. + Montréal + + + H3G 1M8 + https://www.concordia.ca + + + Stingers (Hockey masculin) + team + + https://stingers.ca/mhockey/ + + + Johnny + Stinger + + 2003-11-02 + jo_stinger@encs.concordia.ca + + + Jimmy + Bee + + 2001-01-05 + jim_bee@jmsb.concordia.ca + + + 2023-05-17 18:53:00 + Fracture du fémur + 2024-02-01 + + + + + + 2022-03-17 19:13:00 + Entorse cheville droite + 2022-03-23 + + + + + + 2023-10-15 19:55:00 + Commotion cérébrale mineure + 2023-11-01 + + + + + + + + + + + + + Coach + + + \ No newline at end of file diff --git a/bemade_sports_clinic/models/patient.py b/bemade_sports_clinic/models/patient.py index 7df7a93..d418379 100644 --- a/bemade_sports_clinic/models/patient.py +++ b/bemade_sports_clinic/models/patient.py @@ -37,6 +37,7 @@ class Patient(models.Model): string='Injuries', groups='bemade_sports_clinic.group_sports_clinic_treatment_professional') predicted_return_date = fields.Date(compute='_compute_predicted_return_date', ) + # authorized_users = fields.One2many(compute='_compute_authorized_users', store=True) # # @api.depends('injury_ids.treatment_professional_ids', 'team_ids.staff_team_ids', @@ -63,10 +64,11 @@ class Patient(models.Model): lambda r: r.predicted_return_date > date.today()).sorted( 'predicted_return_date') if ongoing_injuries: - rec.predicted_return_date = ongoing_injuries[-1].\ - predicted_return_date + rec.predicted_return_date = ongoing_injuries[-1]. \ + predicted_return_date else: rec.predicted_return_date = False + def _compute_name(self): for rec in self: rec.name = ((rec.first_name or "") + " " + (rec.last_name or @@ -106,5 +108,22 @@ class PatientInjury(models.Model): column2='treatment_pro_id', string='Treatment Professionals', domain=[ - ('user_ids', '!=', False)], ) + ('is_treatment_professional', '=', + True)], ) predicted_return_date = fields.Date(tracking=True) + + def write(self, vals): + super().write(vals) + if 'treatment_professional_ids' in vals: + to_subscribe = (self.treatment_professional_ids + - self.message_follower_ids.mapped('partner_id')) + self.message_subscribe(to_subscribe.ids) + + + @api.model_create_multi + def create(self, vals_list): + super().write(vals_list) + for rec in self: + to_subscribe = (rec.treatment_professional_ids + - rec.message_follower_ids.mapped('partner_id')) + rec.message_subscribe(to_subscribe.ids) diff --git a/bemade_sports_clinic/models/res_partner.py b/bemade_sports_clinic/models/res_partner.py index 3b7d5f5..09e6dea 100644 --- a/bemade_sports_clinic/models/res_partner.py +++ b/bemade_sports_clinic/models/res_partner.py @@ -10,7 +10,7 @@ class Partner(models.Model): column1='team_id', column2='patient_id', string='Players') - type = fields.Selection(selection_add=[('team', 'Sports Team'),]) + type = fields.Selection(selection_add=[('team', 'Sports Team'), ]) staff_partner_ids = fields.Many2many(comodel_name='res.partner', relation='sports_team_staff_partner_rel', column1='team_id', @@ -22,6 +22,10 @@ class Partner(models.Model): column2='team_id', string='Teams') + is_treatment_professional = fields.Boolean( + compute="_compute_is_treatment_professional", + store=True) + def write(self, vals): teams = self.filtered(lambda r: r.type == 'team') if teams and 'type' in vals and vals['type'] != 'team': @@ -39,3 +43,13 @@ class Partner(models.Model): 'Its type cannot be deleted until these relations are ' 'removed. You may try archiving it instead.')) return super().unlink() + + @api.depends('user_ids.groups_id') + def _compute_is_treatment_professional(self): + user_partners = self.filtered(lambda r: r.user_ids) + non_user_partners = self - user_partners + non_user_partners.is_treatment_professional = False + group = self.env.ref( + 'bemade_sports_clinic.group_sports_clinic_treatment_professional') + for rec in user_partners: + rec.is_treatment_professional = group in rec.user_ids.groups_id