diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py index 980ca2f1c2babfd3d0293261c95cbd4bd55aa5b1..74daa60b3d3b7fd9b88b5870d8a7c3e50f043a3d 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 0000000000000000000000000000000000000000..0bbb807a572a749317cbec51dee40d3e9714d525 --- /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()