Mailing: Add support for a from field

Add support to the mailing profiles for specifying a "from"
address. Closes GitLab issue #522.

This commit adds a new backend class property "class_fields"
which differs from the normal "fields" property. The "class_fields"
property specifies which of the backend fields will be used to
initialize a backend's driver class. This is to avoid passing
fields that the driver doesn't expect and getting an error.

When sending emails, the "send" method will attempt to get
a "from" key from the backend data and use that when sending
emails. If no "from" key is found a None is passes. Django's
behavior in this situation dictates that the "from" value will
then be taken from the DEFAULT_FROM_EMAIL setting.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-11-28 02:59:12 -04:00
parent b6976210a5
commit 29b41a7638
9 changed files with 123 additions and 17 deletions

View File

@@ -48,6 +48,11 @@ class MailerBackendBase(object):
class_path = '' # Dot path to the actual class that will handle the mail
fields = {}
@classmethod
def get_class_fields(cls):
backend_field_list = getattr(cls, 'fields', {}).keys()
return getattr(cls, 'class_fields', backend_field_list)
class MailerBackend(six.with_metaclass(MailerBackendMetaclass, MailerBackendBase)):
@classmethod