| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from django import forms
- from django.contrib.auth.forms import AuthentificationForm, UserCreationForm
- from users.models import User
- import re
- class RegisterForm(UserCreationForm):
- username = forms.CharField(label="Логин", widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "Введите логин"}))
- full_name = forms.CharField(label="ФИО", widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "Введите ФИО"}))
- phone = forms.CharField(label="Номер телефона", widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "8(900)000-00-00"}))
- email = forms.CharField(label="Электронная почта", widget=forms.EmailInput(attrs={"class": "form-control", "placeholder": "Введите email"}))
- password1 = forms.CharField(label="Пароль", widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "Введите пароль"}))
- password2 = forms.CharField(label="Подтверждение пароля", widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "Подтвердите пароль"}))
- class Meta:
- model = User
- fields = ["username", "full_name", "phone", "email", "password1", "password2", "role", "is_staff"]
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- for field in self.fields.values():
- field.help_text = ""
-
- def clean_username(self):
- username = self.cleaned_data["username"]
- if not re.fullmatch(r"[A-Za-z0-9]{6, }"):
- raise forms.ValidationError("Логин должен содержать минимум 6 символов, латинские буквы и цифры")
- if User.objects.filter(username=username).exists():
- raise forms.ValidationError("Такой логин уже существует")
- return username
-
- def clean_full_name(self):
- full_name = self.cleaned_data["full_name"]
- if not re.fullmatch(r"[А-Яа-яЁё\s]+", full_name):
- raise forms.ValidationError("ФИО должно содержать кириллицу и пробелы")
- return full_name
-
- def clean_phone(self):
- phone = self.cleaned_data["phone"]
- if not re.fullmatch(r"8\d{3}-\d{2}-\d{2}"):
- raise forms.ValidationError("Телефон должен иметь формат 8(000)-00-00")
- return phone
- def clean_email(self):
- email = self.cleaned_data["email"]
- if User.objects.filter(email=email).exists():
- raise forms.ValidationError("Такой email уже существует")
- return email
-
- class LoginForm(AuthentificationForm):
- username = forms.CharField(label="", widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "Введите логин"}))
- password = forms.CharField(label="", widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "Введите пароль"}))
|