63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
import threading
|
|
from datetime import datetime
|
|
from django.contrib.auth import get_user_model
|
|
from django.conf import settings
|
|
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()
|