Files
digest_app/module_auth/forms.py

72 lines
2.1 KiB
Python

from django import forms
from django.core import validators
from module_iam.models import IAmPrincipal
from module_project import constants
class LoginForm(forms.Form):
email = forms.EmailField(
max_length=254,
widget=forms.TextInput(attrs={"autofocus": True}),
label="Email",
)
password = forms.CharField(
label="Password",
strip=False,
widget=forms.PasswordInput()
)
class UserForm(forms.ModelForm):
password = forms.CharField(
widget=forms.PasswordInput(attrs={"autocomplete": "off"}),
validators=[
validators.MinLengthValidator(
limit_value=6, message="Password must be at least 6 characters long. "
)
],
)
confirm_password = forms.CharField(
widget=forms.PasswordInput(attrs={"autocomplete": "off"})
)
class Meta:
model = IAmPrincipal
fields = [
"first_name",
"email",
"password",
"confirm_password",
]
labels = {
"first_name": "Name",
}
def clean_email(self):
email = self.cleaned_data.get('email')
if IAmPrincipal.objects.filter(email=email).exists():
raise forms.ValidationError("This email address is already in use.")
return email
def clean(self):
cleaned_data = super().clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password and confirm_password and password != confirm_password:
self.add_error("confirm_password", "Passwords do not match.")
return cleaned_data
def save(self, commit=True):
instance = super().save(commit=False)
# Check if it's a new object (create action) or an existing one (update action)
if not instance.pk: # pk is None for new objects
instance.username = self.cleaned_data["email"]
instance.set_password(self.cleaned_data["password"])
if commit:
instance.save()
return instance