diff --git a/README.md b/README.md index 009c7ab..ec51470 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ DB_HOST=localhost DB_PORT=[YOUR_POSTGRES_PORT default is 5432] USER_EMAIL=[YOUR_EMAIL] USER_PASSWORD=[EMAIL_PASSWORD] +EMAIL_FROM_ADDRESS=[THE DEFAULT FROM ADDRESS FOR SENT EMAILS] DEBUG=True SECRET_KEY=[YOUR_SECRET_KEY] ``` diff --git a/accounts/forms.py b/accounts/forms.py index 47f6177..da376bd 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -1,5 +1,6 @@ from datetime import datetime +from django.conf import settings from django.core.mail import send_mail from django import forms from django.db import transaction @@ -22,7 +23,7 @@ class StaffAddForm(UserCreationForm): } ), label="Username", - required=False + required=False, ) first_name = forms.CharField( @@ -89,7 +90,7 @@ class StaffAddForm(UserCreationForm): } ), label="Password", - required=False + required=False, ) password2 = forms.CharField( @@ -101,7 +102,7 @@ class StaffAddForm(UserCreationForm): } ), label="Password Confirmation", - required=False + required=False, ) class Meta(UserCreationForm.Meta): @@ -118,13 +119,17 @@ class StaffAddForm(UserCreationForm): user.email = self.cleaned_data.get("email") # Generate a username based on first and last name and registration date - registration_date = datetime.now().strftime('%Y%m%d%H%M') - generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}" + registration_date = datetime.now().strftime("%Y%m%d%H%M") + generated_username = ( + f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}" + ) # Check if the generated username already exists, and regenerate if needed while User.objects.filter(username=generated_username).exists(): - registration_date = datetime.now().strftime('%Y%m%d%H%M') - generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}".replace(" ", "") + registration_date = datetime.now().strftime("%Y%m%d%H%M") + generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}".replace( + " ", "" + ) user.username = generated_username @@ -136,9 +141,9 @@ class StaffAddForm(UserCreationForm): # Send email with the generated credentials send_mail( - 'Your account credentials', - f'Your username: {generated_username}\nYour password: {generated_password}', - 'from@example.com', + "Your account credentials", + f"Your username: {generated_username}\nYour password: {generated_password}", + "from@example.com", [user.email], fail_silently=False, ) @@ -153,8 +158,7 @@ class StudentAddForm(UserCreationForm): attrs={"type": "text", "class": "form-control", "id": "username_id"} ), label="Username", - required=False - + required=False, ) address = forms.CharField( max_length=30, @@ -245,8 +249,7 @@ class StudentAddForm(UserCreationForm): } ), label="Password", - required=False - + required=False, ) password2 = forms.CharField( @@ -258,7 +261,7 @@ class StudentAddForm(UserCreationForm): } ), label="Password Confirmation", - required=False + required=False, ) # def validate_email(self): @@ -282,13 +285,17 @@ class StudentAddForm(UserCreationForm): user.email = self.cleaned_data.get("email") # Generate a username based on first and last name and registration date - registration_date = datetime.now().strftime('%Y%m%d%H%M') - generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}" + registration_date = datetime.now().strftime("%Y%m%d%H%M") + generated_username = ( + f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}" + ) # Check if the generated username already exists, and regenerate if needed while User.objects.filter(username=generated_username).exists(): - registration_date = datetime.now().strftime('%Y%m%d%H%M') - generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}".replace(" ", "") + registration_date = datetime.now().strftime("%Y%m%d%H%M") + generated_username = f"{user.first_name.lower()}{user.last_name.lower()}{registration_date}".replace( + " ", "" + ) user.username = generated_username @@ -300,9 +307,9 @@ class StudentAddForm(UserCreationForm): # Send email with the generated credentials send_mail( - 'Your account credentials', - f'Your username: {generated_username}\nYour password: {generated_password}', - 'from@example.com', + "Your account credentials", + f"Your username: {generated_username}\nYour password: {generated_password}", + settings.EMAIL_FROM_ADDRESS, [user.email], fail_silently=False, ) diff --git a/config/settings.py b/config/settings.py index 13d9819..a7f6d17 100644 --- a/config/settings.py +++ b/config/settings.py @@ -189,12 +189,17 @@ MEDIA_ROOT = os.path.join(BASE_DIR, "media") # ----------------------------------- # E-mail configuration -EMAIL_BACKEND = config("EMAIL_BACKEND", default="django.core.mail.backends.smtp.EmailBackend") -EMAIL_HOST = config("EMAIL_HOST", default="smtp.gmail.com") # Gmail as the email host, but you can change it +EMAIL_BACKEND = config( + "EMAIL_BACKEND", default="django.core.mail.backends.smtp.EmailBackend" +) +EMAIL_HOST = config( + "EMAIL_HOST", default="smtp.gmail.com" +) # Gmail as the email host, but you can change it EMAIL_PORT = config("EMAIL_PORT", default=587) EMAIL_USE_TLS = True EMAIL_HOST_USER = config("USER_EMAIL") EMAIL_HOST_PASSWORD = config("USER_PASSWORD") +EMAIL_FROM_ADDRESS = config("EMAIL_FROM_ADDRESS") # crispy config CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"