Files
django-dav-events/dav_auth/forms.py
Jens Kleineheismann d7e2acff34 Replaced ugettext and ugettext_lazy with gettext and gettext_lazy
ugettext and ugettext_lazy were deprecated in Django 3 and will be
removed in Django 4.
2025-04-10 11:33:06 +02:00

73 lines
2.5 KiB
Python

# -*- coding: utf-8 -*-
import logging
from django import forms
from django.contrib.auth import forms as auth_forms, password_validation
from django.utils.translation import gettext, gettext_lazy as _
logger = logging.getLogger(__name__)
class LoginForm(auth_forms.AuthenticationForm):
username = auth_forms.UsernameField(
label=_('E-Mail-Adresse'),
widget=forms.TextInput(attrs={'autofocus': True}),
)
error_messages = {
'invalid_login': _('Benutzername oder Passwort falsch.'),
'inactive': _('This account is inactive.'),
}
def clean_username(self):
username = self.cleaned_data.get('username')
return username.lower()
class SetPasswordForm(forms.Form):
new_password = forms.CharField(label=_('Neues Passwort'),
widget=forms.PasswordInput)
new_password_repeat = forms.CharField(label=_('Neues Passwort wiederholen'),
widget=forms.PasswordInput)
send_password_mail = forms.BooleanField(required=False,
initial=False,
label=_('Neues Passwort per E-Mail zusenden'),
)
def __init__(self, user, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
def clean_new_password(self):
password = self.cleaned_data.get('new_password')
password_validation.validate_password(password, self.user)
return password
def clean_new_password_repeat(self):
password1 = self.cleaned_data.get('new_password')
password2 = self.cleaned_data.get('new_password_repeat')
if password1 and password2:
if password1 != password2:
raise forms.ValidationError(
gettext('Passwörter stimmen nicht überein'),
code='password_mismatch',
)
return password2
def save(self, commit=True):
new_password = self.cleaned_data.get('new_password')
self.user.set_password(new_password)
if commit:
self.user.save()
return self.user
class CreateAndSendPasswordForm(forms.Form):
username = auth_forms.UsernameField(
label=_('E-Mail-Adresse'),
widget=forms.TextInput(attrs={'autofocus': True}),
)
def clean_username(self):
username = self.cleaned_data.get('username')
return username.lower()