bemade_sports_clinic: good to go for new version with split notifications (tested with staging)

This commit is contained in:
Marc Durepos 2024-02-21 15:53:10 -05:00
parent ae385ed1f7
commit a13d03f777
4 changed files with 18 additions and 42 deletions

View file

@ -79,7 +79,7 @@
</p>
<div>
<p><strong>New Note: </strong></p>
<div><t t-out="object.note"/></div>
<div><t t-out="object.team_info_notes"/></div>
</div>
</field>
</record>

View file

@ -9,14 +9,14 @@ def migrate(cr, version):
injury_followers = env['mail.followers'].search([('res_model', '=',
'sports.patient.injury')])
for f in patient_followers:
if f.partner_id.user_id.has_group('base.group_user'):
if f.partner_id.user_ids.has_group('base.group_user'):
subtype = env.ref('bemade_sports_clinic.subtype_patient_internal_update').id
else:
subtype = env.ref('bemade_sports_clinic.subtype_patient_external_update').id
f.write({'subtype_ids': [Command.set([subtype])]})
f.write({'subtype_ids': [Command.link(subtype)]})
for f in injury_followers:
if f.partner_id.user_id.has_group('base.group_user'):
if f.partner_id.user_ids.has_group('base.group_user'):
subtype = env.ref('bemade_sports_clinic.subtype_patient_injury_internal_update').id
else:
subtype = env.ref('bemade_sports_clinic.subtype_patient_injury_external_update').id
f.write({'subtype_ids': [Command.set([subtype])]})
f.write({'subtype_ids': [Command.link(subtype)]})

View file

@ -227,39 +227,27 @@ class Patient(models.Model):
raise_exception=False
)
@api.model
def __get_track_internal_external(self, params: Set[str]) -> Tuple[bool, bool]:
""" Based on the fields being changed, determine if the notification being sent is meant for external
or internal followers, or neither."""
external = bool(external_tracking_fields & params)
internal = external or bool(internal_tracking_fields & params)
return external, internal
def _track_subtype(self, init_values):
external, internal = self.__get_track_internal_external({key for key in init_values.keys()})
if external:
return self.env.ref('bemade_sports_clinic.subtype_patient_external_update')
elif internal:
return self.env.ref('bemade_sports_clinic.subtype_patient_internal_update')
else:
return self.env.ref('mail.mt_note')
return self.env.ref('mail.mt_note')
def _track_template(self, changes):
res = super()._track_template(changes)
external, internal = self.__get_track_internal_external({change for change in changes})
params = set(changes)
external = bool(external_tracking_fields & params)
if external:
first_external_field = (external_tracking_fields & set(changes)).pop()
first_external_field = (external_tracking_fields & params).pop()
res[first_external_field] = (
self.env.ref('bemade_sports_clinic.mail_template_patient_status_update'), {
'auto_delete_message': False,
'subtype_id': self.env.ref('bemade_sports_clinic.subtype_patient_external_update').id,
'email_layout_xmlid': 'mail.mail_notification_light',
}
)
if 'internal_notes' in changes:
if 'team_info_notes' in changes:
res['team_info_notes'] = (
self.env.ref('bemade_sports_clinic.mail_template_patient_new_internal_note'), {
'auto_delete_message': False,
'subtype_id': self.env.ref('bemade_sports_clinic.subtype_patient_internal_update').id,
'email_layout_xmlid': 'mail.mail_notification_light',
}
)

View file

@ -126,32 +126,19 @@ class PatientInjury(models.Model):
'context': self._context,
}
@api.model
def __get_track_internal_external(self, params: Set[str]) -> Tuple[bool, bool]:
""" Based on the fields being changed, determine if the notification being sent is meant for external
or internal followers, or neither."""
external = bool(external_tracking_fields & params)
internal = external or bool(internal_tracking_fields & params)
return external, internal
def _track_subtype(self, init_values):
external, internal = self.__get_track_internal_external({key for key in init_values.keys()})
if external:
return self.env.ref('bemade_sports_clinic.subtype_patient_injury_external_update')
elif internal:
return self.env.ref('bemade_sports_clinic.subtype_patient_injury_internal_update')
else:
return self.env.ref('mail.mt_note')
return self.env.ref('mail.mt_note')
def _track_template(self, changes):
res = super()._track_template(changes)
external, internal = self.__get_track_internal_external({change for change in changes})
params = set(changes)
external = bool(external_tracking_fields & params)
if external:
first_external_field = (external_tracking_fields & set(changes)).pop()
first_external_field = (external_tracking_fields & params).pop()
res[first_external_field] = (
self.env.ref('bemade_sports_clinic.mail_template_patient_injury_status_update'), {
'auto_delete_message': False,
'subtype_id': self.env.ref('bemade_sports_clinic.subtype_patient_injury_external_update').id,
'email_layout_xmlid': 'mail.mail_notification_light',
}
)
@ -159,6 +146,7 @@ class PatientInjury(models.Model):
res['internal_notes'] = (
self.env.ref('bemade_sports_clinic.mail_template_patient_injury_new_internal_note'), {
'auto_delete_message': False,
'subtype_id': self.env.ref('bemade_sports_clinic.subtype_patient_injury_internal_update').id,
'email_layout_xmlid': 'mail.mail_notification_light',
}
)