2021-03-08 11:49:10 -05:00
|
|
|
""" send emails """
|
2021-03-21 11:54:57 -04:00
|
|
|
from django.core.mail import EmailMultiAlternatives
|
|
|
|
from django.template.loader import get_template
|
2020-10-02 17:55:28 -04:00
|
|
|
|
|
|
|
from bookwyrm import models
|
|
|
|
from bookwyrm.tasks import app
|
2021-03-21 14:43:14 -04:00
|
|
|
from bookwyrm.settings import DOMAIN
|
2020-10-02 17:55:28 -04:00
|
|
|
|
2021-03-08 11:49:10 -05:00
|
|
|
|
2021-03-21 14:43:14 -04:00
|
|
|
def email_data():
|
|
|
|
""" fields every email needs """
|
2021-03-21 12:13:21 -04:00
|
|
|
site = models.SiteSettings.objects.get()
|
2021-03-21 14:43:14 -04:00
|
|
|
if site.logo_small:
|
|
|
|
logo_path = '/images/{}'.format(site.logo_small.url)
|
|
|
|
else:
|
|
|
|
logo_path = '/static/images/logo-small.png'
|
|
|
|
|
|
|
|
return {
|
2021-03-21 12:13:21 -04:00
|
|
|
"site_name": site.name,
|
2021-03-21 14:43:14 -04:00
|
|
|
"logo": logo_path,
|
|
|
|
"domain": DOMAIN,
|
|
|
|
"user": None,
|
2021-03-21 12:13:21 -04:00
|
|
|
}
|
2021-03-21 14:43:14 -04:00
|
|
|
|
|
|
|
|
|
|
|
def invite_email(invite_request):
|
|
|
|
""" send out an invite code """
|
|
|
|
data = email_data()
|
|
|
|
data["invite_link"] = invite_request.invite.link
|
2021-03-21 12:13:21 -04:00
|
|
|
send_email.delay(invite_request.email, "invite", data)
|
|
|
|
|
|
|
|
|
2020-10-02 17:55:28 -04:00
|
|
|
def password_reset_email(reset_code):
|
2021-03-08 11:49:10 -05:00
|
|
|
""" generate a password reset email """
|
2021-03-21 14:43:14 -04:00
|
|
|
data = email_data()
|
|
|
|
data["reset_link"] = reset_code.link
|
|
|
|
data["user"] = reset_code.user.diplay_name
|
2021-03-21 11:54:57 -04:00
|
|
|
send_email.delay(reset_code.user.email, "password_reset", data)
|
2020-10-02 17:55:28 -04:00
|
|
|
|
2021-03-08 11:49:10 -05:00
|
|
|
|
2020-10-02 17:55:28 -04:00
|
|
|
@app.task
|
2021-03-21 11:54:57 -04:00
|
|
|
def send_email(recipient, message_name, data):
|
2021-03-08 11:49:10 -05:00
|
|
|
""" use a task to send the email """
|
2021-03-21 12:20:37 -04:00
|
|
|
subject = (
|
|
|
|
get_template("email/{}/subject.html".format(message_name)).render(data).strip()
|
|
|
|
)
|
|
|
|
html_content = (
|
|
|
|
get_template("email/{}/html_content.html".format(message_name))
|
|
|
|
.render(data)
|
|
|
|
.strip()
|
|
|
|
)
|
|
|
|
text_content = (
|
|
|
|
get_template("email/{}/text_content.html".format(message_name))
|
|
|
|
.render(data)
|
|
|
|
.strip()
|
|
|
|
)
|
2021-03-21 11:54:57 -04:00
|
|
|
|
|
|
|
email = EmailMultiAlternatives(subject, text_content, None, [recipient])
|
|
|
|
email.attach_alternative(html_content, "text/html")
|
|
|
|
email.send()
|