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