bookwyrm/bookwyrm/emailing.py

49 lines
1.3 KiB
Python
Raw Normal View History

2021-03-08 16:49:10 +00:00
""" send emails """
2021-03-21 15:54:57 +00:00
from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
2020-10-02 21:55:28 +00:00
from bookwyrm import models
from bookwyrm.tasks import app
2021-03-08 16:49:10 +00:00
2021-03-21 16:13:21 +00:00
def invite_email(invite_request):
""" send out an invite code """
site = models.SiteSettings.objects.get()
data = {
"site_name": site.name,
"invite_link": invite_request.invite.link,
}
send_email.delay(invite_request.email, "invite", data)
2020-10-02 21:55:28 +00:00
def password_reset_email(reset_code):
2021-03-08 16:49:10 +00:00
""" generate a password reset email """
2021-03-21 15:54:57 +00:00
site = models.SiteSettings.objects.get()
data = {
"site_name": site.name,
"reset_link": reset_code.link,
}
send_email.delay(reset_code.user.email, "password_reset", data)
2020-10-02 21:55:28 +00:00
2021-03-08 16:49:10 +00:00
2020-10-02 21:55:28 +00:00
@app.task
2021-03-21 15:54:57 +00:00
def send_email(recipient, message_name, data):
2021-03-08 16:49:10 +00:00
""" use a task to send the email """
2021-03-21 16:20:37 +00: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 15:54:57 +00:00
email = EmailMultiAlternatives(subject, text_content, None, [recipient])
email.attach_alternative(html_content, "text/html")
email.send()