From 4ca65f10d23e308a2f9317e1b58da5898db71e0d Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Fri, 25 Feb 2022 13:11:46 +0100
Subject: [PATCH] Implement automatic sending of info mailings

---
 aleksis/apps/paweljong/models.py |  6 ++++++
 aleksis/apps/paweljong/tasks.py  | 10 ++++++++++
 2 files changed, 16 insertions(+)
 create mode 100644 aleksis/apps/paweljong/tasks.py

diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py
index 980ca2f..74daa60 100644
--- a/aleksis/apps/paweljong/models.py
+++ b/aleksis/apps/paweljong/models.py
@@ -29,6 +29,8 @@ class InfoMailing(ExtensibleModel):
     text = RichTextField(verbose_name=_("Text"))
     reply_to = models.EmailField(verbose_name=_("Request replies to"), blank=True)
 
+    active = models.BooleanField(verbose_name=_("Mailing is active"), default=False)
+
     send_to_person = models.BooleanField(verbose_name=_("Send to registered person"), default=True)
     send_to_guardians = models.BooleanField(verbose_name=_("Send to guardians"), default=False)
 
@@ -37,6 +39,10 @@ class InfoMailing(ExtensibleModel):
     def __str__(self) -> str:
         return self.subject
 
+    @classmethod
+    def get_active_mailings(cls):
+        return cls.objects.filter(active=True)
+
     def send(self):
         sent_to = self.sent_to.all()
 
diff --git a/aleksis/apps/paweljong/tasks.py b/aleksis/apps/paweljong/tasks.py
new file mode 100644
index 0000000..0bbb807
--- /dev/null
+++ b/aleksis/apps/paweljong/tasks.py
@@ -0,0 +1,10 @@
+from datetime import timedelta
+
+from aleksis.core.celery import app
+
+
+@app.task(run_every=timedelta(hours=1))
+def send_info_mailings() -> None:
+    from .models import InfoMailing  # noqa
+    for mailing in InfoMailing.get_active_mailings():
+        mailing.send()
-- 
GitLab