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 .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:

@ -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,

Loading…
Cancel
Save