feat: adds notification

This commit is contained in:
Livio Bieri 2024-02-01 19:01:55 +01:00
parent 1ab5052d0d
commit 3f40e2fe07
3 changed files with 90 additions and 0 deletions

View File

@ -76,6 +76,20 @@ class EmailTemplate(Enum):
"it": "d-30c6aa9accda4973a940dd25703cb4a9", "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( def send_email(
recipient_email: str, recipient_email: str,

View File

@ -24,6 +24,13 @@ class NotificationTrigger(models.TextChoices):
CASEWORK_EVALUATED = "CASEWORK_EVALUATED", _("Casework Evaluated") CASEWORK_EVALUATED = "CASEWORK_EVALUATED", _("Casework Evaluated")
NEW_FEEDBACK = "NEW_FEEDBACK", _("New Feedback") 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): class Notification(AbstractNotification):
# UUIDs are not supported by the notifications app... # UUIDs are not supported by the notifications app...

View File

@ -23,6 +23,7 @@ from vbv_lernwelt.notify.models import (
NotificationCategory, NotificationCategory,
NotificationTrigger, NotificationTrigger,
) )
from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback
if TYPE_CHECKING: if TYPE_CHECKING:
from vbv_lernwelt.assignment.models import AssignmentCompletion from vbv_lernwelt.assignment.models import AssignmentCompletion
@ -73,6 +74,74 @@ class NotificationService:
email_template=EmailTemplate.CASEWORK_SUBMITTED, 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 @classmethod
def send_assignment_evaluated_notification( def send_assignment_evaluated_notification(
cls, cls,