You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.forms import AuthenticationForm
|
|
from django.core.exceptions import ValidationError
|
|
from django.forms import CharField
|
|
from django.forms.models import ModelForm
|
|
from django.forms.widgets import PasswordInput
|
|
|
|
|
|
class LoginForm(AuthenticationForm):
|
|
field_order = ['username', 'password']
|
|
class Meta:
|
|
model = get_user_model()
|
|
|
|
|
|
class RegisterForm(ModelForm):
|
|
password1 = CharField(label='Password', widget=PasswordInput)
|
|
password2 = CharField(label='Confirm Password', widget=PasswordInput)
|
|
|
|
field_order = ['username', 'email', 'password1', 'password2', 'phone_number', 'company', 'line', 'user_type', 'company_permissions', 'employee_permissions', 'is_active']
|
|
|
|
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ['username', 'email', 'password1', 'password2', 'phone_number', 'company', 'line', 'user_type', 'company_permissions', 'employee_permissions', 'is_active']
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.fields['password1'].widget.attrs.update({'autocomplete': 'new-password'})
|
|
self.fields['password2'].widget.attrs.update({'autocomplete': 'new-password'})
|
|
self.fields['user_type'].widget.attrs['disabled'] = True
|
|
self.fields['company_permissions'].widget.attrs['disabled'] = True
|
|
self.fields['employee_permissions'].widget.attrs['disabled'] = True
|
|
|
|
if self.data.get('user_type') in ( 'EM', 'BS'):
|
|
self.fields['company_permissions'].required = False
|
|
if self.data.get('user_type') in ('CL', 'CA', 'BS'):
|
|
self.fields['company_permissions'].required = False
|
|
|
|
def clean(self):
|
|
cleaned_data = super().clean()
|
|
password1 = cleaned_data.get('password1')
|
|
password2 = cleaned_data.get('password2')
|
|
|
|
if password1 and password2 and password1 != password2:
|
|
raise ValidationError("Passwords don't match")
|
|
return cleaned_data
|
|
|
|
def save(self, commit=True):
|
|
user = super().save(commit=False)
|
|
user.set_password(self.cleaned_data['password1'])
|
|
if commit:
|
|
user.save()
|
|
return user
|
|
|