From dfaa02308297111f16a55f2dc4a036bc133f0fac Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Wed, 13 Nov 2024 20:51:54 +0100 Subject: [PATCH] mailer: set from addr to logged in users association mail --- jdav_web/mailer/admin.py | 10 +++++++--- jdav_web/mailer/models.py | 12 +++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py index d9d529b..6fc2a3f 100644 --- a/jdav_web/mailer/admin.py +++ b/jdav_web/mailer/admin.py @@ -12,6 +12,7 @@ from rules.contrib.admin import ObjectPermissionsModelAdmin from .models import Message, Attachment, MessageForm, EmailAddress, EmailAddressForm from .mailutils import NOT_SENT, PARTLY_SENT from members.models import Member +from members.admin import FilteredMemberFieldMixin from contrib.admin import CommonAdminMixin, CommonAdminInlineMixin @@ -20,7 +21,7 @@ class AttachmentInline(CommonAdminInlineMixin, admin.TabularInline): extra = 0 -class EmailAddressAdmin(admin.ModelAdmin): +class EmailAddressAdmin(FilteredMemberFieldMixin, admin.ModelAdmin): list_display = ('email', ) #formfield_overrides = { # models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, @@ -30,7 +31,7 @@ class EmailAddressAdmin(admin.ModelAdmin): form = EmailAddressForm -class MessageAdmin(CommonAdminMixin, ObjectPermissionsModelAdmin): +class MessageAdmin(FilteredMemberFieldMixin, CommonAdminMixin, ObjectPermissionsModelAdmin): """Message creation view""" exclude = ('created_by',) list_display = ('subject', 'get_recipients', 'sent') @@ -88,7 +89,10 @@ class MessageAdmin(CommonAdminMixin, ObjectPermissionsModelAdmin): def submit_message(msg, request): - success = msg.submit() + sender = None + if hasattr(request.user, 'member'): + sender = request.user.member + success = msg.submit(sender) if success == NOT_SENT: messages.error(request, _("Failed to send message")) elif success == PARTLY_SENT: diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index e2220a7..14faf8f 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -113,7 +113,7 @@ class Message(CommonModel): return ", ".join(recipients) get_recipients.short_description = _('recipients') - def submit(self): + def submit(self, sender=None): """Sends the mail to the specified group of members""" # recipients members = set() @@ -147,12 +147,14 @@ class Message(CommonModel): # reply to addresses reply_to_unfiltered = [jl.association_email for jl in self.reply_to.all()] reply_to_unfiltered.extend([ml.email for ml in self.reply_to_email_address.all()]) - # remove sending address from reply-to field (probably unnecessary since it's removed by - # the mail provider anyways) - reply_to = [mail for mail in reply_to_unfiltered if mail != settings.DEFAULT_SENDING_MAIL ] + # set correct from address + if sender is None: + from_addr = settings.DEFAULT_SENDING_MAIL + else: + from_addr = sender.association_email try: success = send(self.subject, get_content(self.content, registration_complete=True), - settings.DEFAULT_SENDING_MAIL, + from_addr, emails, message_id=message_id, attachments=attach,