annoy members without completed registration

v1-0-stable
Christian Merten 4 years ago
parent 4386ae268a
commit bc39b3b17e

@ -39,12 +39,18 @@ def send(subject, content, sender, recipients, message_id=None, reply_to=None,
and succeeded else PARTLY_SENT and succeeded else PARTLY_SENT
def get_content(content): def get_content(content, registration_complete=True):
url = "https://{}/newsletter/unsubscribe".format(HOST) url = "https://{}/newsletter/unsubscribe".format(HOST)
text = "{}\n\n\n*********\n\nDiese Email wurde über die Webseite der JDAV Ludwigsburg"\ prepend = "WICHTIGE MITTEILUNG\n\n"\
" verschickt. Wenn du in Zukunft keine Emails mehr erhalten möchtest,"\ "Deine Anmeldung ist aktuell nicht vollständig. Bitte fülle umgehend das"\
" kannst du hier den Newsletter deabonnieren:\n{}"\ " Anmeldeformular aus und lasse es Deine*r Jugendleiter*in zukommen! Falls"\
.format(content, url) " Du kein Anmeldeformular hast oder Dich wunderst, wieso Du diese Nachricht siehst,"\
" dann melde dich unter jugendreferent@{}\n"\
"\n****************\n\n".format(HOST)
text = "{}{}\n\n\n****************\n\nDiese Email wurde über die Webseite der JDAV Ludwigsburg"\
" verschickt. Wenn Du in Zukunft keine Emails mehr erhalten möchtest,"\
" kannst Du hier den Newsletter deabonnieren:\n{}"\
.format("" if registration_complete else prepend, content, url)
return text return text

@ -128,10 +128,17 @@ class Message(models.Model):
self.to_notelist.membersonlist.all()]) self.to_notelist.membersonlist.all()])
filtered = [m for m in members if m.gets_newsletter] filtered = [m for m in members if m.gets_newsletter]
print("sending mail to", filtered) print("sending mail to", filtered)
attach = [a.f.path for a in Attachment.objects.filter(msg__id=self.pk) attach = [a.f.path for a in Attachment.objects.filter(msg__id=self.pk)
if a.f.name] if a.f.name]
emails = [member.email for member in filtered] recipients_with_reminder = [m for m in filtered if not m.registered]
emails.extend([member.email_parents for member in filtered recipients_without_reminder = [m for m in filtered if m.registered]
emails_rem = [member.email for member in recipients_with_reminder]
emails_rem.extend([member.email_parents for member in recipients_with_reminder
if member.email_parents and member.cc_email_parents])
emails_no_rem = [member.email for member in recipients_without_reminder]
emails_no_rem.extend([member.email_parents for member in recipients_without_reminder
if member.email_parents and member.cc_email_parents]) if member.email_parents and member.cc_email_parents])
# remove any underscores from subject to prevent Arne from using # remove any underscores from subject to prevent Arne from using
# terrible looking underscores in subjects # terrible looking underscores in subjects
@ -145,18 +152,25 @@ class Message(models.Model):
# the mail provider anyways) # the mail provider anyways)
reply_to = [mail for mail in reply_to_unfiltered if mail != SENDING_ADDRESS ] reply_to = [mail for mail in reply_to_unfiltered if mail != SENDING_ADDRESS ]
try: try:
success = send(self.subject, get_content(self.content), success1 = send(self.subject, get_content(self.content, registration_complete=False),
SENDING_ADDRESS,
emails_rem,
message_id=message_id,
attachments=attach,
reply_to=reply_to)
success2 = send(self.subject, get_content(self.content, registration_complete=True),
SENDING_ADDRESS, SENDING_ADDRESS,
emails, emails_no_rem,
message_id=message_id, message_id=message_id,
attachments=attach, attachments=attach,
reply_to=reply_to) reply_to=reply_to)
if success == SENT or success == PARTLY_SENT: if (success1 == SENT or success1 == PARTLY_SENT) and (success2 == SENT or success2 == PARTLY_SENT):
self.sent = True self.sent = True
for a in Attachment.objects.filter(msg__id=self.pk): for a in Attachment.objects.filter(msg__id=self.pk):
if a.f.name: if a.f.name:
os.remove(a.f.path) os.remove(a.f.path)
a.delete() a.delete()
success = SENT
except Exception as e: except Exception as e:
print("Exception caught", e) print("Exception caught", e)
success = NOT_SENT success = NOT_SENT

Loading…
Cancel
Save