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.
42 lines
1.4 KiB
Python
42 lines
1.4 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 = message.reply_to.all()
|
|
except (Message.DoesNotExist, ValueError):
|
|
extracted = re.match("^([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()
|
|
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))
|