Skip to content

Commit 04e6593

Browse files
committed
update lint
1 parent af0a95c commit 04e6593

File tree

1 file changed

+82
-54
lines changed

1 file changed

+82
-54
lines changed

task_manager/users/forms.py

Lines changed: 82 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,75 +3,98 @@
33
from django.contrib.auth.models import User
44
from django.core.exceptions import ValidationError
55

6-
# Константы — SonarCloud их не трогает
7-
USERNAME_FIELD = 'username'
8-
PASSWORD1_FIELD = 'password1'
9-
PASSWORD2_FIELD = 'password2'
10-
116

127
class UserRegistrationForm(UserCreationForm):
138
first_name = forms.CharField(
149
required=True,
1510
label='Имя',
16-
widget=forms.TextInput(attrs={'class': 'form-control'}),
17-
error_messages={'required': 'Обязательное поле.'}
11+
widget=forms.TextInput(attrs={
12+
'class': 'form-control',
13+
}),
14+
error_messages={
15+
'required': 'Обязательное поле.',
16+
}
1817
)
1918
last_name = forms.CharField(
2019
required=True,
2120
label='Фамилия',
22-
widget=forms.TextInput(attrs={'class': 'form-control'}),
23-
error_messages={'required': 'Обязательное поле.'}
21+
widget=forms.TextInput(attrs={
22+
'class': 'form-control',
23+
}),
24+
error_messages={
25+
'required': 'Обязательное поле.',
26+
}
2427
)
2528

2629
class Meta:
2730
model = User
28-
fields = ("first_name", "last_name", USERNAME_FIELD, PASSWORD1_FIELD, PASSWORD2_FIELD)
31+
fields = (
32+
"first_name", "last_name", "username", "password1", "password2"
33+
)
2934
labels = {
30-
USERNAME_FIELD: 'Имя пользователя',
31-
PASSWORD1_FIELD: 'Пароль',
32-
PASSWORD2_FIELD: 'Подтверждение пароля',
35+
'username': 'Имя пользователя',
36+
'password1': 'Пароль',
37+
'password2': 'Подтверждение пароля',
3338
}
3439
help_texts = {
35-
USERNAME_FIELD: 'Обязательное поле. Не более 150 символов. Только буквы, цифры и @/./+/-/_',
36-
PASSWORD1_FIELD: 'Ваш пароль должен содержать как минимум 3 символа.',
37-
PASSWORD2_FIELD: 'Для подтверждения введите пароль ещё раз.',
40+
'username': (
41+
'Обязательное поле. Не более 150 символов. '
42+
'Только буквы, цифры и символы @/./+/-/_.'
43+
),
44+
'password1': 'Ваш пароль должен содержать как минимум 3 символа.',
45+
'password2': 'Для подтверждения введите, пожалуйста, '
46+
'пароль ещё раз.',
3847
}
3948
error_messages = {
40-
USERNAME_FIELD: {
49+
'username': {
4150
'required': 'Обязательное поле.',
4251
'unique': 'Пользователь с таким именем уже существует.',
4352
'max_length': 'Не более 150 символов.',
4453
},
45-
PASSWORD1_FIELD: {'required': 'Обязательное поле.'},
46-
PASSWORD2_FIELD: {'required': 'Обязательное поле.'},
54+
'password1': {
55+
'required': 'Обязательное поле.',
56+
},
57+
'password2': {
58+
'required': 'Обязательное поле.',
59+
},
60+
}
61+
widgets = {
62+
'username': forms.TextInput(attrs={
63+
'class': 'form-control',
64+
}),
65+
'password1': forms.PasswordInput(attrs={
66+
'placeholder': 'Пароль',
67+
'class': 'form-control',
68+
'autocomplete': 'new-password',
69+
}),
70+
'password2': forms.PasswordInput(attrs={
71+
'class': 'form-control',
72+
'autocomplete': 'new-password',
73+
}),
4774
}
48-
# УБРАЛИ widgets отсюда — они больше не нужны
49-
# widgets = { ... } ← удалить весь блок!
5075

5176
def __init__(self, *args, **kwargs):
77+
# 1. Сначала вызываем родительский конструктор
5278
super().__init__(*args, **kwargs)
5379

54-
# Теперь безопасно обращаемся по константам
55-
self.fields[USERNAME_FIELD].help_text = (
80+
# 2. Затем переопределяем help_text для нужных полей
81+
self.fields['username'].help_text = (
5682
'Обязательное поле. Не более 150 символов. '
5783
'Только буквы, цифры и символы @/./+/-/_.'
5884
)
59-
self.fields[PASSWORD1_FIELD].widget.attrs.update({
60-
'placeholder': 'Пароль',
61-
'class': 'form-control',
62-
'autocomplete': 'new-password',
63-
})
64-
self.fields[PASSWORD2_FIELD].widget.attrs.update({
65-
'class': 'form-control',
66-
'autocomplete': 'new-password',
67-
})
85+
self.fields['password1'].help_text = (
86+
'Ваш пароль должен содержать как минимум 3 символа.'
87+
)
88+
self.fields['password2'].help_text = (
89+
'Для подтверждения введите, пожалуйста, пароль ещё раз.'
90+
)
6891

6992
def clean_password2(self):
70-
p1 = self.cleaned_data.get(PASSWORD1_FIELD)
71-
p2 = self.cleaned_data.get(PASSWORD2_FIELD)
72-
if p1 and p2 and p1 != p2:
93+
password1 = self.cleaned_data.get("password1")
94+
password2 = self.cleaned_data.get("password2")
95+
if password1 and password2 and password1 != password2:
7396
raise ValidationError("Два поля пароля не совпадают.")
74-
return p2
97+
return password2
7598

7699
def save(self, commit=True):
77100
user = super().save(commit=False)
@@ -83,23 +106,24 @@ def save(self, commit=True):
83106

84107

85108
class UserUpdateForm(forms.ModelForm):
109+
# Добавляем поля пароля (необязательные)
86110
password1 = forms.CharField(
87111
label='Пароль',
88-
widget=forms.PasswordInput(attrs={
89-
'placeholder': 'Пароль',
90-
'autocomplete': 'new-password'
91-
}),
92-
required=False,
112+
widget=forms.PasswordInput(
113+
attrs={'placeholder': 'Пароль', 'autocomplete': 'new-password'}
114+
),
115+
required=True,
116+
error_messages={'required': 'Обязательное поле'},
93117
help_text='Оставьте пустым, если не хотите менять пароль.',
94118
)
95119
password2 = forms.CharField(
96120
label='Подтверждение пароля',
97-
widget=forms.PasswordInput(attrs={
98-
'class': 'form-control',
99-
'autocomplete': 'new-password'
100-
}),
101-
required=False,
102-
help_text='Введите пароль ещё раз',
121+
widget=forms.PasswordInput(
122+
attrs={'class': 'form-control', 'autocomplete': 'new-password'}
123+
),
124+
required=True,
125+
error_messages={'required': 'Обязательное поле'},
126+
help_text='Подтверждение пароля',
103127
)
104128

105129
class Meta:
@@ -119,17 +143,21 @@ class Meta:
119143
}
120144

121145
def clean(self):
122-
cleaned = super().clean()
123-
p1 = cleaned.get('password1')
124-
p2 = cleaned.get('password2')
125-
if p1 and p1 != p2:
146+
cleaned_data = super().clean()
147+
password1 = cleaned_data.get('password1')
148+
password2 = cleaned_data.get('password2')
149+
if password1 != password2:
126150
raise ValidationError('Пароли не совпадают')
127-
return cleaned
151+
return cleaned_data
128152

129153
def save(self, commit=True):
130154
user = super().save(commit=False)
131-
if self.cleaned_data['password1']:
132-
user.set_password(self.cleaned_data['password1'])
155+
156+
# Обновляем пароль, только если он указан
157+
password1 = self.cleaned_data.get('password1')
158+
if password1:
159+
user.set_password(password1)
160+
133161
if commit:
134162
user.save()
135163
return user

0 commit comments

Comments
 (0)