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

44 lines
1.6 KiB
Python

from django.core.management.base import BaseCommand
from mailer.models import Message
from members.models import Member
from django.db.models import Q
import re
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 = 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 = [l.email for l in replies]
self.stdout.write(" ".join(forwards))