From e2f9eb7db038426136ce485891b074665bcb8207 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Mon, 2 Dec 2024 22:02:19 +0100 Subject: [PATCH] mailer: add option to switch between sending from one email address vs from personalized email addresses --- jdav_web/jdav_web/settings/local.py | 4 ++++ jdav_web/mailer/admin.py | 9 +++++++-- jdav_web/mailer/models.py | 9 ++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/jdav_web/jdav_web/settings/local.py b/jdav_web/jdav_web/settings/local.py index 571293e..e1b000c 100644 --- a/jdav_web/jdav_web/settings/local.py +++ b/jdav_web/jdav_web/settings/local.py @@ -35,6 +35,10 @@ CONGRATULATE_MEMBERS_MAX = 10 MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = 24 ALLOWED_EMAIL_DOMAINS_FOR_INVITE_AS_USER = ('alpenverein-heidelberg.de', ) +# mail mode + +SEND_FROM_ASSOCIATION_EMAIL = os.environ.get('SEND_FROM_ASSOCIATION_EMAIL', '0') == '1' + # finance ALLOWANCE_PER_DAY = 22 diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py index 9c1af2b..a889d06 100644 --- a/jdav_web/mailer/admin.py +++ b/jdav_web/mailer/admin.py @@ -92,8 +92,13 @@ class MessageAdmin(FilteredMemberFieldMixin, CommonAdminMixin, ObjectPermissions def submit_message(msg, request): sender = None - if hasattr(request.user, 'member'): - sender = request.user.member + if not hasattr(request.user, 'member'): + messages.error(request, _("Your account is not connected to a member. Please contact your system administrator.")) + return + sender = request.user.member + if not sender.has_internal_email(): + messages.error(request, _("Your email address is not an internal email address. Please change your email address and try again.")) + return success = msg.submit(sender) if success == NOT_SENT: messages.error(request, _("Failed to send message")) diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index e8486f8..5059d11 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -155,10 +155,17 @@ class Message(CommonModel): reply_to = [jl.association_email for jl in self.reply_to.all()] reply_to.extend([ml.email for ml in self.reply_to_email_address.all()]) # set correct from address - if sender is None: + # if the sender is none or if sending from association emails has been + # disabled, use the default sending mail + if sender is None or not settings.SEND_FROM_ASSOCIATION_EMAIL: from_addr = settings.DEFAULT_SENDING_MAIL else: from_addr = sender.association_email + # if sending from the association email has been disabled, + # a sender was supplied and the reply to is empty, add the sender's + # DAV360 email as reply to + if sender and not settings.SEND_FROM_ASSOCIATION_EMAIL and sender.has_internal_email() and reply_to == []: + reply_to.append(sender.email) try: success = send(self.subject, get_content(self.content, registration_complete=True), from_addr,