bemade_sports_clinic: added more demo data, fixed some read/write issues in injury model.

This commit is contained in:
Marc Durepos 2023-10-16 20:32:11 -04:00
parent d5d54c0374
commit ad0ba3b086
4 changed files with 156 additions and 5 deletions

View file

@ -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,

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="partner_org_1" model="res.partner">
<field name="name">Université de Montréal</field>
<field name="street">C.P. 6128, succursale Centre-ville</field>
<field name="city">Montréal</field>
<field name="state_id" ref="base.state_ca_qc"/>
<field name="country_id" ref="base.ca"/>
<field name="zip">H3C 3J7</field>
<field name="phone">+1 (514) 343-6111</field>
<field name="website">https://www.umontreal.ca</field>
</record>
<record id="team_carabins" model="res.partner">
<field name="name">Carabins (Football masculin)</field>
<field name="type">team</field>
<field name="parent_id" ref="partner_org_1"/>
<field name="website">https://carabins.umontreal.ca/football</field>
</record>
<record id="patient_1" model="sports.patient">
<field name="first_name">Jean</field>
<field name="last_name">Carabin</field>
<field name="team_ids" eval="[(6, 0, [ref('team_carabins')])]"/>
<field name="date_of_birth">2001-08-23</field>
<field name="email">jean.carabin@edudiants.umontreal.ca</field>
</record>
<record id="patient_2" model="sports.patient">
<field name="first_name">Rémi</field>
<field name="last_name">Lafracture</field>
<field name="team_ids" eval="[(6, 0, [ref('team_carabins')])]"/>
<field name="date_of_birth">2002-05-17</field>
<field name="email">remi.lafracture@edudiants.umontreal.ca</field>
</record>
<record id="team_carabins_hockey" model="res.partner">
<field name="name">Carabins (Hockey féminin)</field>
<field name="type">team</field>
<field name="parent_id" ref="partner_org_1"/>
<field name="website">https://carabins.umontreal.ca/football</field>
</record>
<record id="patient_3" model="sports.patient">
<field name="first_name">Jeanne</field>
<field name="last_name">Carabine</field>
<field name="team_ids" eval="[(6, 0, [ref('team_carabins_hockey')])]"/>
<field name="date_of_birth">2001-08-23</field>
<field name="email">jeanne.carabine@edudiants.umontreal.ca</field>
</record>
<record id="patient_4" model="sports.patient">
<field name="first_name">Rimée</field>
<field name="last_name">Lafracture</field>
<field name="team_ids" eval="[(6, 0, [ref('team_carabins_hockey')])]"/>
<field name="date_of_birth">2004-11-22</field>
<field name="email">rimee.lafracture@edudiants.umontreal.ca</field>
</record>
<record id="partner_org_2" model="res.partner">
<field name="name">Université Concordia</field>
<field name="street">1455 boulevard de Maisonneuve W.</field>
<field name="city">Montréal</field>
<field name="state_id" ref="base.state_ca_qc"/>
<field name="country_id" ref="base.ca"/>
<field name="zip">H3G 1M8</field>
<field name="website">https://www.concordia.ca</field>
</record>
<record id="team_stingers" model="res.partner">
<field name="name">Stingers (Hockey masculin)</field>
<field name="type">team</field>
<field name="parent_id" ref="partner_org_2"/>
<field name="website">https://stingers.ca/mhockey/</field>
</record>
<record id="patient_5" model="sports.patient">
<field name="first_name">Johnny</field>
<field name="last_name">Stinger</field>
<field name="team_ids" eval="[(6, 0, [ref('team_stingers')])]"/>
<field name="date_of_birth">2003-11-02</field>
<field name="email">jo_stinger@encs.concordia.ca</field>
</record>
<record id="patient_6" model="sports.patient">
<field name="first_name">Jimmy</field>
<field name="last_name">Bee</field>
<field name="team_ids" eval="[(6, 0, [ref('team_stingers')])]"/>
<field name="date_of_birth">2001-01-05</field>
<field name="email">jim_bee@jmsb.concordia.ca</field>
</record>
<record id="injury_1" model="sports.patient.injury">
<field name="injury_date_time">2023-05-17 18:53:00</field>
<field name="diagnosis">Fracture du fémur</field>
<field name="predicted_return_date">2024-02-01</field>
<field name="patient_id" ref="patient_1"/>
<field name="internal_notes"></field>
<field name="treatment_professional_ids" eval="[(6, 0, [ref('base.partner_admin')])]"/>
</record>
<record id="injury_2" model="sports.patient.injury">
<field name="injury_date_time">2022-03-17 19:13:00</field>
<field name="diagnosis">Entorse cheville droite</field>
<field name="predicted_return_date">2022-03-23</field>
<field name="patient_id" ref="patient_1"/>
<field name="internal_notes"></field>
<field name="treatment_professional_ids" eval="[(6, 0, [ref('base.partner_admin')])]"/>
</record>
<record id="injury_3" model="sports.patient.injury">
<field name="injury_date_time">2023-10-15 19:55:00</field>
<field name="diagnosis">Commotion cérébrale mineure</field>
<field name="predicted_return_date">2023-11-01</field>
<field name="patient_id" ref="patient_3"/>
<field name="internal_notes"></field>
<field name="treatment_professional_ids" eval="[(6, 0, [ref('base.partner_admin')])]"/>
</record>
<record id="base.user_admin" model="res.users">
<field name="groups_id" eval="[Command.link(ref('group_sports_clinic_admin'))]"/>
</record>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[Command.link(ref('group_sports_clinic_user'))]"/>
</record>
<record id="base.partner_demo_portal" model="res.partner">
<field name="parent_id" ref="bemade_sports_clinic.team_carabins"/>
<field name="function">Coach</field>
</record>
</data>
</odoo>

View file

@ -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)

View file

@ -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