Skip to content
Snippets Groups Projects
Verified Commit d24d07e1 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

IMplement sending of info mailing

parent bc1202d4
No related branches found
No related tags found
1 merge request!9Resolve "Info mailing"
......@@ -8,10 +8,11 @@ from django.utils.translation import gettext_lazy as _
from ckeditor.fields import RichTextField
from django_iban.fields import IBANField
from templated_email import send_templated_mail
from aleksis.core.mixins import ExtensibleModel
from aleksis.core.models import Group, Person
from aleksis.core.util.core_helpers import generate_random_code
from aleksis.core.util.core_helpers import generate_random_code, get_site_preferences
class Terms(ExtensibleModel):
......@@ -26,12 +27,45 @@ class Terms(ExtensibleModel):
class InfoMailing(ExtensibleModel):
subject = models.CharField(max_length=255, verbose_name=_("subject"))
text = RichTextField(verbose_name=_("Text"))
reply_to = models.EmailField(verbose_name=_("Request replies to"), blank=True)
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)
sent_to = models.ManyToManyField(Person, verbose_name=_("Sent to persons"), related_name="received_info_mailings", editable=False, blank=True)
def __str__(self) -> str:
return self.subject
def send(self):
sent_to = self.sent_to.all()
for event in self.events.all():
for registration in event.registrations:
if registration.person in sent_to:
continue
subject = self.subject.format(event=event, registration=registration, person=registration.person)
body = self.text.format(event=event, registration=registration, person=registration.person)
if self.send_to_person:
to = [registration.person.email]
if self.send_to_guardians:
cc = registration.person.guardians.values_list("email", flat=True).all()
else:
cc = []
elif self.send_to_guardians:
to = registration.person.guardians.values_list("email", flat=True).all()
cc = []
sender = self.sender or get_site_preferences()["mail__address"]
reply_to = self.reply_to or sender
context = {"subject": subject, "body": body}
send_templated_email(template_name="info_mailing", context=context, from_email=sender, recipient_list=to, cc=cc)
self.sent_to.add(self.registration.person)
class Event(ExtensibleModel):
# Event details
......@@ -153,7 +187,7 @@ class Voucher(ExtensibleModel):
class EventRegistration(ExtensibleModel):
event = models.ForeignKey(Event, on_delete=models.CASCADE, verbose_name=_("Event"))
event = models.ForeignKey(Event, on_delete=models.CASCADE, verbose_name=_("Event"), related_name="registrations")
person = models.ForeignKey(Person, on_delete=models.CASCADE, verbose_name=_("Person"))
date_registered = models.DateTimeField(auto_now_add=True, verbose_name=_("Registration date"))
......
{% block subject %}{{ subject }}{% endblock %}
{% block html %}{{ body|safe }}{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment