from django.conf import settings
from django.contrib.auth.tokens import default_token_generator
from django.core.mail import send_mail
from django.urls import reverse
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode


def activation_token(user):
    return urlsafe_base64_encode(force_bytes(user.pk)), default_token_generator.make_token(user)


def send_activation_email(user, request=None):
    uid, token = activation_token(user)
    url = f"{settings.FRONTEND_URL.rstrip('/')}/activate?uid={uid}&token={token}"
    product = settings.PRODUCT_NAME
    send_mail(
        f"Activate your {product} account",
        f"Welcome to {product}. Set your password and activate your account: {url}",
        settings.DEFAULT_FROM_EMAIL,
        [user.email],
        fail_silently=False,
    )
    return url
