Browse Source

Refactor CoderedFormMixin email sending to be override-able (#443)

Co-authored-by: JorneVL <jorne.vanlandschoot@cloudinnovation.be>
Vince Salvino 3 years ago
parent
commit
74e0f08069
2 changed files with 15 additions and 3 deletions
  1. 11 3
      coderedcms/models/page_models.py
  2. 4 0
      docs/releases/v0.22.0.rst

+ 11 - 3
coderedcms/models/page_models.py

@@ -1277,9 +1277,7 @@ class CoderedFormMixin(models.Model):
                 message_args['to'] = template_to.render(context).split(',')
 
                 # Send email
-                message = EmailMessage(**message_args)
-                message.content_subtype = 'html'
-                message.send()
+                self.send_mail(request, message_args, 'html')
 
         for fn in hooks.get_hooks('form_page_submit'):
             fn(instance=self, form_submission=form_submission)
@@ -1318,7 +1316,17 @@ class CoderedFormMixin(models.Model):
             message_args['reply_to'] = template_reply_to.render(context).split(',')
 
         # Send email
+        self.send_mail(request, message_args)
+
+    def send_mail(self, resuest, message_args, content_subtype='text'):
+        """
+        Utility to send email messages from form submissions.
+
+        You can override this method to have the form send mail in a different
+        way or using a different backend as needed.
+        """
         message = EmailMessage(**message_args)
+        message.content_subtype = content_subtype
         message.send()
 
     def render_landing_page(self, request, form_submission=None):

+ 4 - 0
docs/releases/v0.22.0.rst

@@ -17,6 +17,10 @@ New features
 * Updated support for Google ``UA-``, ``G-``, and ``GTM-`` tracking scripts.
   See :doc:`/how_to/add_tracking_scripts`.
 
+* ``CoderedFormMixin`` has a new method ``send_mail()`` which can be overridden
+  in your models to have the form send mail in a different way or using a
+  different backend as needed.
+
 
 Bug fixes
 ---------