2024-10-01 18:44:08 +03:00

63 lines
2.0 KiB
Python

from datetime import datetime
from django.contrib.auth import get_user_model
from django.conf import settings
import threading
from core.utils import send_html_email
def generate_password():
return get_user_model().objects.make_random_password()
def generate_student_id():
# Generate a username based on first and last name and registration date
registered_year = datetime.now().strftime("%Y")
students_count = get_user_model().objects.filter(is_student=True).count()
return f"{settings.STUDENT_ID_PREFIX}-{registered_year}-{students_count}"
def generate_lecturer_id():
# Generate a username based on first and last name and registration date
registered_year = datetime.now().strftime("%Y")
lecturers_count = get_user_model().objects.filter(is_lecturer=True).count()
return f"{settings.LECTURER_ID_PREFIX}-{registered_year}-{lecturers_count}"
def generate_student_credentials():
return generate_student_id(), generate_password()
def generate_lecturer_credentials():
return generate_lecturer_id(), generate_password()
class EmailThread(threading.Thread):
def __init__(self, subject, recipient_list, template_name, context):
self.subject = subject
self.recipient_list = recipient_list
self.template_name = template_name
self.context = context
threading.Thread.__init__(self)
def run(self):
send_html_email(
subject=self.subject,
recipient_list=self.recipient_list,
template=self.template_name,
context=self.context,
)
def send_new_account_email(user, password):
if user.is_student:
template_name = "accounts/email/new_student_account_confirmation.html"
else:
template_name = "accounts/email/new_lecturer_account_confirmation.html"
email = {
"subject": "Your SkyLearn account confirmation and credentials",
"recipient_list": [user.email],
"template_name": template_name,
"context": {"user": user, "password": password},
}
EmailThread(**email).start()