From c6e0e157aec5eb0d58513008c63abc806c8fb2b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Mon, 16 May 2022 01:09:36 +0200
Subject: [PATCH] Introduce sending of mails when a new orga message is saved

This will send an email with the text and a link to the corresponding AK to the contact mail adress specified for a given event
This implements #116
---
 AKSubmission/models.py | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/AKSubmission/models.py b/AKSubmission/models.py
index 6b202199..9f435bd8 100644
--- a/AKSubmission/models.py
+++ b/AKSubmission/models.py
@@ -1 +1,24 @@
-# Create your models here.
+from django.conf import settings
+from django.core.mail import EmailMessage
+from django.db.models.signals import post_save
+from django.dispatch import receiver
+from django.urls import reverse_lazy
+
+from AKModel.models import AKOrgaMessage
+
+
+@receiver(post_save, sender=AKOrgaMessage)
+def orga_message_saved_handler(sender, instance: AKOrgaMessage, **kwargs):
+    # React to saved (thus new) Orga message by sending an email
+
+    if settings.SEND_MAILS:
+        host = 'https://' + settings.ALLOWED_HOSTS[0] if len(settings.ALLOWED_HOSTS) > 0 else 'http://127.0.0.1:8000'
+        url = f"{host}{reverse_lazy('submit:ak_detail', kwargs={'pk': instance.ak.pk, 'event_slug': instance.ak.event.slug})}"
+
+        mail = EmailMessage(
+            f"[AKPlanning] New message for AK '{instance.ak}' ({instance.ak.event})",
+            f"{instance.text}\n\n{url}",
+            settings.DEFAULT_FROM_EMAIL,
+            [instance.ak.event.contact_email]
+        )
+        mail.send(fail_silently=True)
-- 
GitLab