Files
old-riskletpy/backend/accounts/utils.py

64 lines
2.2 KiB
Python
Raw Normal View History

2025-02-13 16:38:29 +01:00
from django.core.mail import send_mail
from django.urls import reverse
from .models import EmailConfirmation
import uuid
from django.conf import settings
from django.utils.timezone import now
from backend.core.models import Document, Organization
2025-02-24 10:19:27 +01:00
from django.core.mail import EmailMultiAlternatives
from django.utils.html import format_html
from backend.core.utils import generate_first_page_image
from email.mime.image import MIMEImage
2025-03-19 13:48:52 +01:00
site_domain = settings.SITE_DOMAIN
2025-02-13 16:38:29 +01:00
def send_confirmation_email(email):
confirmation, created = EmailConfirmation.objects.get_or_create(email=email)
if not created:
confirmation.uuid = uuid.uuid4()
confirmation.created_at = now()
confirmation.save()
2025-03-19 13:48:52 +01:00
confirmation_link = f"{site_domain}{reverse('confirm_email', args=[confirmation.uuid])}"
2025-02-13 16:38:29 +01:00
send_mail(
subject="Confirm your e-mail address",
message=f"Please click on the link to confirm your e-mail address: {confirmation_link}",
from_email=settings.DEFAULT_FROM_EMAIL,
2025-02-13 16:38:29 +01:00
recipient_list=[email]
)
def send_payment_email(email):
organization = Organization.objects.get(email=email)
document = Document.objects.get(organization=organization)
2025-03-19 13:48:52 +01:00
payment_link = f"{site_domain}{reverse('core:payment_page')}?email={email}"
send_mail(
subject="Complete your payment",
message=f"Click the link to proceed with payment: {payment_link}",
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=[email],
fail_silently=False,
)
2025-02-24 10:19:27 +01:00
def send_document_email(email, document_link, document):
image_io = generate_first_page_image(document)
subject = "Your Document is Ready"
html_content = format_html(
'<p>Your document is ready. Click the image below to view the full PDF:</p>'
'<a href="{}" target="_blank">'
'<img src="cid:first_page" style="width:100%;max-width:300px;" alt="Document Preview"/></a>',
document_link
)
msg = EmailMultiAlternatives(subject, "", settings.DEFAULT_FROM_EMAIL, [email])
2025-02-24 10:19:27 +01:00
msg.attach_alternative(html_content, "text/html")
image_attachment = MIMEImage(image_io.getvalue(), "image/jpeg")
image_attachment.add_header('Content-ID', '<first_page>')
msg.attach(image_attachment)
msg.send()