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.
43 lines
1.5 KiB
Python
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))
|