208 lines
6.2 KiB
Python
208 lines
6.2 KiB
Python
"""
|
|
Author: Michel Peltriaux
|
|
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
|
Contact: michel.peltriaux@sgdnord.rlp.de
|
|
Created on: 09.11.20
|
|
|
|
"""
|
|
from django.core.mail import send_mail
|
|
from django.template.loader import render_to_string
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from konova.sub_settings.django_settings import DEFAULT_FROM_EMAIL, EMAIL_REPLY_TO, SUPPORT_MAIL_RECIPIENT
|
|
|
|
|
|
class Mailer:
|
|
"""
|
|
A wrapper for the django internal mailing functionality
|
|
"""
|
|
from_mail = None
|
|
to_mail = []
|
|
fail_silently = False
|
|
|
|
# Optional. Can be changed using the constructor to authenticate on the smtp server using other credentials
|
|
auth_user = None
|
|
auth_password = None
|
|
|
|
def __init__(self, from_mail: str = DEFAULT_FROM_EMAIL, auth_user: str = None, auth_password: str = None, fail_silently: bool = False):
|
|
self.from_mail = from_mail
|
|
self.fail_silently = fail_silently
|
|
self.auth_user = auth_user
|
|
self.auth_password = auth_password
|
|
|
|
def send(self, recipient_list: list, subject: str, msg: str):
|
|
"""
|
|
Sends a mail with subject and message
|
|
"""
|
|
return send_mail(
|
|
subject=subject,
|
|
message=None,
|
|
html_message=msg,
|
|
from_email=self.from_mail,
|
|
recipient_list=recipient_list,
|
|
fail_silently=self.fail_silently,
|
|
auth_user=self.auth_user,
|
|
auth_password=self.auth_password
|
|
)
|
|
|
|
def send_mail_shared_access_removed(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if user has no access to the object anymore
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
obj_title (str): The object title
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/sharing/shared_access_removed.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared access removed").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_shared_access_given(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if user just got access to the object
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/sharing/shared_access_given.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared access given").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_shared_data_recorded(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if the user's shared data has just been unrecorded
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/recording/shared_data_recorded.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared data recorded").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if the user's shared data has just been unrecorded
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/recording/shared_data_unrecorded.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared data unrecorded").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_shared_data_deleted(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if shared data has just been deleted
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/deleting/shared_data_deleted.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared data deleted").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_shared_data_checked(self, obj_identifier, obj_title, user):
|
|
""" Send a mail if shared data just has been checked
|
|
|
|
Args:
|
|
obj_identifier (str): The object identifier
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"obj_identifier": obj_identifier,
|
|
"obj_title": obj_title,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/checking/shared_data_checked.html", context)
|
|
user_mail_address = [user.email]
|
|
self.send(
|
|
user_mail_address,
|
|
_("{} - Shared data checked").format(obj_identifier),
|
|
msg
|
|
)
|
|
|
|
def send_mail_verify_api_token(self, user):
|
|
""" Send a mail if a user creates a new token
|
|
|
|
Args:
|
|
user (User): The user, having a new api token
|
|
|
|
Returns:
|
|
|
|
"""
|
|
context = {
|
|
"user": user,
|
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
|
}
|
|
msg = render_to_string("email/api/verify_token.html", context)
|
|
user_mail_address = [SUPPORT_MAIL_RECIPIENT]
|
|
self.send(
|
|
user_mail_address,
|
|
_("Request for new API token"),
|
|
msg
|
|
)
|
|
|