mailer: set from addr to logged in users association mail

individual-sender-address
Christian Merten 1 year ago
parent d43c7cce44
commit dfaa023082
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -12,6 +12,7 @@ from rules.contrib.admin import ObjectPermissionsModelAdmin
from .models import Message, Attachment, MessageForm, EmailAddress, EmailAddressForm from .models import Message, Attachment, MessageForm, EmailAddress, EmailAddressForm
from .mailutils import NOT_SENT, PARTLY_SENT from .mailutils import NOT_SENT, PARTLY_SENT
from members.models import Member from members.models import Member
from members.admin import FilteredMemberFieldMixin
from contrib.admin import CommonAdminMixin, CommonAdminInlineMixin from contrib.admin import CommonAdminMixin, CommonAdminInlineMixin
@ -20,7 +21,7 @@ class AttachmentInline(CommonAdminInlineMixin, admin.TabularInline):
extra = 0 extra = 0
class EmailAddressAdmin(admin.ModelAdmin): class EmailAddressAdmin(FilteredMemberFieldMixin, admin.ModelAdmin):
list_display = ('email', ) list_display = ('email', )
#formfield_overrides = { #formfield_overrides = {
# models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, # models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
@ -30,7 +31,7 @@ class EmailAddressAdmin(admin.ModelAdmin):
form = EmailAddressForm form = EmailAddressForm
class MessageAdmin(CommonAdminMixin, ObjectPermissionsModelAdmin): class MessageAdmin(FilteredMemberFieldMixin, CommonAdminMixin, ObjectPermissionsModelAdmin):
"""Message creation view""" """Message creation view"""
exclude = ('created_by',) exclude = ('created_by',)
list_display = ('subject', 'get_recipients', 'sent') list_display = ('subject', 'get_recipients', 'sent')
@ -88,7 +89,10 @@ class MessageAdmin(CommonAdminMixin, ObjectPermissionsModelAdmin):
def submit_message(msg, request): 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: if success == NOT_SENT:
messages.error(request, _("Failed to send message")) messages.error(request, _("Failed to send message"))
elif success == PARTLY_SENT: elif success == PARTLY_SENT:

@ -113,7 +113,7 @@ class Message(CommonModel):
return ", ".join(recipients) return ", ".join(recipients)
get_recipients.short_description = _('recipients') get_recipients.short_description = _('recipients')
def submit(self): def submit(self, sender=None):
"""Sends the mail to the specified group of members""" """Sends the mail to the specified group of members"""
# recipients # recipients
members = set() members = set()
@ -147,12 +147,14 @@ class Message(CommonModel):
# reply to addresses # reply to addresses
reply_to_unfiltered = [jl.association_email for jl in self.reply_to.all()] 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()]) 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 # set correct from address
# the mail provider anyways) if sender is None:
reply_to = [mail for mail in reply_to_unfiltered if mail != settings.DEFAULT_SENDING_MAIL ] from_addr = settings.DEFAULT_SENDING_MAIL
else:
from_addr = sender.association_email
try: try:
success = send(self.subject, get_content(self.content, registration_complete=True), success = send(self.subject, get_content(self.content, registration_complete=True),
settings.DEFAULT_SENDING_MAIL, from_addr,
emails, emails,
message_id=message_id, message_id=message_id,
attachments=attach, attachments=attach,

Loading…
Cancel
Save