bemade_sports_clinic: added more demo data, fixed some read/write issues in injury model.
This commit is contained in:
parent
d5d54c0374
commit
ad0ba3b086
4 changed files with 156 additions and 5 deletions
|
|
@ -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,
|
||||
|
|
|
|||
118
bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml
Normal file
118
bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml
Normal 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>
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue