All checks were successful
Build and Push Docker Image / build (push) Successful in 46s
- Added email templates for activation and password reset (`activation_email.html`, `password_reset_email.html`, etc.) - Created forms for registration (`RegisterForm`) and login (`LoginForm`) with custom validation - Developed new pages for account activation (`activation_success.html`, `activation_invalid.html`), password reset workflow, and profile - Configured email backend and environment file handling in settings - Updated header template to conditionally display profile or login links based on authentication status - Enhanced CSS styles for authentication-related pages and forms
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from django.conf import settings
|
|
from django.contrib.auth.tokens import default_token_generator
|
|
from django.core.mail import EmailMultiAlternatives
|
|
from django.template.loader import render_to_string
|
|
from django.urls import reverse
|
|
from django.utils.encoding import force_bytes
|
|
from django.utils.http import urlsafe_base64_encode
|
|
|
|
|
|
def send_activation_email(request, user):
|
|
uid = urlsafe_base64_encode(force_bytes(user.pk))
|
|
token = default_token_generator.make_token(user)
|
|
activation_path = reverse("users:activate", kwargs={"uidb64": uid, "token": token})
|
|
activation_url = request.build_absolute_uri(activation_path)
|
|
|
|
context = {
|
|
"user": user,
|
|
"activation_url": activation_url,
|
|
"site_name": getattr(settings, "SITE_NAME", "SantehRay"),
|
|
}
|
|
|
|
subject = render_to_string("users/emails/activation_subject.txt", context).strip()
|
|
text_body = render_to_string("users/emails/activation_email.txt", context)
|
|
html_body = render_to_string("users/emails/activation_email.html", context)
|
|
|
|
email = EmailMultiAlternatives(
|
|
subject=subject,
|
|
body=text_body,
|
|
from_email=settings.DEFAULT_FROM_EMAIL,
|
|
to=[user.email],
|
|
)
|
|
email.attach_alternative(html_body, "text/html")
|
|
email.send()
|