diff --git a/server/vbv_lernwelt/notify/email/email_services.py b/server/vbv_lernwelt/notify/email/email_services.py index 45144894..3dba1007 100644 --- a/server/vbv_lernwelt/notify/email/email_services.py +++ b/server/vbv_lernwelt/notify/email/email_services.py @@ -76,6 +76,20 @@ class EmailTemplate(Enum): "it": "d-30c6aa9accda4973a940dd25703cb4a9", } + # Fremdeinschätzung (Requester → Provider) + SELF_EVALUATION_FEEDBACK_REQUESTED = { + "de": "d-cf9c6681991d4293a7baccaa5b043c5c", + "fr": "d-6b103876807a4a0db6a0c31651c1e8ba", + "it": "d-403b2f9d09bb41dc9dc85eed6c35c942", + } + + # Fremdeinschätzung (Provider → Requester) + SELF_EVALUATION_FEEDBACK_PROVIDED = { + "de": "d-e547bff40252458fa802759f2c502e3a", + "fr": "d-62aa7ce8639c49319f92edb858bbb1cd", + "it": "d-de2b5dfaf5d2470dbeea5d3ea2a6c442", + } + def send_email( recipient_email: str, diff --git a/server/vbv_lernwelt/notify/models.py b/server/vbv_lernwelt/notify/models.py index 4e87ffea..70a846de 100644 --- a/server/vbv_lernwelt/notify/models.py +++ b/server/vbv_lernwelt/notify/models.py @@ -24,6 +24,13 @@ class NotificationTrigger(models.TextChoices): CASEWORK_EVALUATED = "CASEWORK_EVALUATED", _("Casework Evaluated") NEW_FEEDBACK = "NEW_FEEDBACK", _("New Feedback") + SELF_EVALUATION_FEEDBACK_REQUESTED = "SELF_EVALUATION_FEEDBACK_REQUESTED", _( + "Self Evaluation Feedback Requested" + ) + SELF_EVALUATION_FEEDBACK_PROVIDED = "SELF_EVALUATION_FEEDBACK_PROVIDED", _( + "Self Evaluation Feedback Provided" + ) + class Notification(AbstractNotification): # UUIDs are not supported by the notifications app... diff --git a/server/vbv_lernwelt/notify/services.py b/server/vbv_lernwelt/notify/services.py index aadde5aa..1a7d9d62 100644 --- a/server/vbv_lernwelt/notify/services.py +++ b/server/vbv_lernwelt/notify/services.py @@ -23,6 +23,7 @@ from vbv_lernwelt.notify.models import ( NotificationCategory, NotificationTrigger, ) +from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback if TYPE_CHECKING: from vbv_lernwelt.assignment.models import AssignmentCompletion @@ -73,6 +74,74 @@ class NotificationService: email_template=EmailTemplate.CASEWORK_SUBMITTED, ) + @classmethod + def send_self_evaluation_feedback_request_feedback_notification( + cls, + self_evaluation_feedback: SelfEvaluationFeedback, + ): + """Requester -> Provider""" + requester_user = self_evaluation_feedback.feedback_requester_user + provider_user = self_evaluation_feedback.feedback_provider_user + + texts = { + "de": "%(requester)s hat eine Selbsteinschätzung mit dir geteilt", + "fr": "%(requester)s a partagé une auto-évaluation avec vous", + "it": "%(requester)s ha condiviso una valutazione personale con te", + } + + verb = texts.get(provider_user.language, "de") % { + "requester": requester_user.get_full_name(), + } + + return cls._send_notification( + recipient=provider_user, + verb=verb, + notification_category=NotificationCategory.USER_INTERACTION, + notification_trigger=NotificationTrigger.SELF_EVALUATION_FEEDBACK_REQUESTED, + sender=requester_user, + target_url=self_evaluation_feedback.feedback_provider_evaluation_url, + action_object=self_evaluation_feedback, + email_template=EmailTemplate.SELF_EVALUATION_FEEDBACK_REQUESTED, + template_data={ + "mentee_name": requester_user.get_full_name(), + "mentee_email": requester_user.email, + }, + ) + + @classmethod + def send_self_evaluation_feedback_received_notification( + cls, + self_evaluation_feedback: SelfEvaluationFeedback, + ): + """Provider -> Requester""" + requester_user = self_evaluation_feedback.feedback_requester_user + provider_user = self_evaluation_feedback.feedback_provider_user + + texts = { + "de": "%(provider)s hat dir eine Fremdeinschätzung gegeben", + "fr": "%(provider)s vous a donné une évaluation externe", + "it": "%(provider)s ti ha dato una valutazione esterna", + } + + verb = texts.get(requester_user.language, "de") % { + "provider": provider_user.get_full_name(), + } + + return cls._send_notification( + recipient=requester_user, + verb=verb, + notification_category=NotificationCategory.USER_INTERACTION, + notification_trigger=NotificationTrigger.SELF_EVALUATION_FEEDBACK_PROVIDED, + sender=provider_user, + target_url=self_evaluation_feedback.feedback_requester_results_url, + action_object=self_evaluation_feedback, + email_template=EmailTemplate.SELF_EVALUATION_FEEDBACK_PROVIDED, + template_data={ + "mentor_name": provider_user.get_full_name(), + "mentor_email": provider_user.email, + }, + ) + @classmethod def send_assignment_evaluated_notification( cls,