You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/mailer/management/commands/reply_addrs.py

43 lines
1.5 KiB
Python

import re
from django.core.management.base import BaseCommand
from mailer.models import Message
from members.models import Member
class Command(BaseCommand):
help = "Shows reply-to addresses"
requires_system_checks = False
def add_arguments(self, parser):
parser.add_argument("--message_id", default="-1")
parser.add_argument("--subject", default="")
def handle(self, *args, **options):
replies = []
try:
message_id = int(options["message_id"])
message = Message.objects.get(pk=message_id)
if message.reply_to:
replies = list(message.reply_to.all())
replies.extend(message.reply_to_email_address.all())
except (Message.DoesNotExist, ValueError):
extracted = re.match(
"^([Ww][Gg]: *|[Ff][Ww]: *|[Rr][Ee]: *|[Aa][Ww]: *)* *(.*)$", options["subject"]
).group(2)
try:
msgs = Message.objects.filter(subject=extracted)
message = msgs.all()[0]
if message.reply_to:
replies = list(message.reply_to.all())
replies.extend(message.reply_to_email_address.all())
except (Message.DoesNotExist, ValueError, IndexError):
pass
if not replies:
# send mail to all jugendleiters
replies = Member.objects.filter(group__name="Jugendleiter", gets_newsletter=True)
forwards = [lst.email for lst in replies]
self.stdout.write(" ".join(forwards))