from django.contrib.auth.forms import UserCreationForm
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
from django.contrib.auth import get_user_model
UserModel = get_user_model()
class MyHolidayUserCreationForm(UserCreationForm):
user = None
def clean_password1(self):
password1 = self.cleaned_data.get("password1")
self.validate_password(password1)
return password1
def validate_password(self, password):
if len(password) < 6:
raise ValidationError(_("Password must be at least 6 characters long."))
has_letter = False
has_digit = False
has_underscore = False
for char in password:
if char.isalpha():
has_letter = True
elif char.isdigit():
has_digit = True
elif char == '_':
has_underscore = True
if not has_letter:
raise ValidationError(_("Password must contain at least one letter."))
if not has_digit:
raise ValidationError(_("Password must contain at least one digit."))
if not has_underscore:
raise ValidationError(_("Password must contain at least one underscore."))
class Meta(UserCreationForm.Meta):
model = UserModel
fields = ('email',)