allow multiple reply-to members on mails

v1-0-stable
Christian Merten 7 years ago
parent e6cf5193bd
commit cb4c30c7c3

@ -30,7 +30,7 @@ class MessageAdmin(admin.ModelAdmin):
inlines = [AttachmentInline]
actions = ['send_message']
form = MessageForm
filter_horizontal = ('to_members',)
filter_horizontal = ('to_members','reply_to')
def send_message(self, request, queryset):
if request.POST.get('confirmed'):

@ -7,7 +7,7 @@ NOT_SENT, SENT, PARTLY_SENT = 0, 1, 2
HOST = os.environ.get('DJANGO_ALLOWED_HOST', 'localhost:8000').split(",")[0]
def send(subject, content, sender, recipients, reply_to=None,
def send(subject, content, sender, recipients, message_id, reply_to=None,
attachments=None):
failed, succeeded = False, False
if type(recipients) != list:
@ -19,7 +19,8 @@ def send(subject, content, sender, recipients, reply_to=None,
with mail.get_connection() as connection:
for recipient in set(recipients):
email = EmailMessage(subject, content, sender, [recipient],
connection=connection, **kwargs)
connection=connection, **kwargs,
headers={'Message-ID': message_id})
if attachments is not None:
for attach in attachments:
email.attach_file(attach)

@ -0,0 +1,26 @@
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'
def add_arguments(self, parser):
parser.add_argument('message_id', type=int)
def handle(self, *args, **options):
replies = []
try:
message = Message.objects.get(pk=options['message_id'])
if message.reply_to:
replies = message.reply_to.all()
except Message.DoesNotExist:
pass
if not replies:
# send mail to all jugendleiters
replies = Member.objects.filter(group__name='Jugendleiter',
gets_newsletter=True)
response = "\n".join([l.email for l in replies])
self.stdout.write(response)

@ -28,11 +28,10 @@ class Message(models.Model):
to_members = models.ManyToManyField('members.Member',
verbose_name=_('to member'),
blank=True)
reply_to = models.ForeignKey('members.Member',
verbose_name=_('reply to'),
blank=True,
null=True,
related_name='reply_to')
reply_to = models.ManyToManyField('members.Member',
verbose_name=_('reply to'),
blank=True,
related_name='reply_to')
sent = models.BooleanField(_('sent'), default=False)
def __str__(self):
@ -77,8 +76,8 @@ class Message(models.Model):
success = send(self.subject, get_content(self.content),
SENDING_ADDRESS,
emails,
attachments=attach,
reply_to=self.reply_to.email if self.reply_to else None)
message_id=self.pk,
attachments=attach)
if success == SENT or success == PARTLY_SENT:
self.sent = True
for a in Attachment.objects.filter(msg__id=self.pk):

Loading…
Cancel
Save