77 lines
2.6 KiB
Python
77 lines
2.6 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 ugettext, ugettext_lazy as _
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class LoginForm(auth_forms.AuthenticationForm):
|
|
username = auth_forms.UsernameField(
|
|
max_length=254,
|
|
label=_(u'E-Mail-Adresse'),
|
|
widget=forms.TextInput(attrs={'autofocus': True}),
|
|
)
|
|
|
|
error_messages = {
|
|
'invalid_login': _(u'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(max_length=12,
|
|
label=_(u'Neues Passwort'),
|
|
widget=forms.PasswordInput)
|
|
new_password_repeat = forms.CharField(max_length=12,
|
|
label=_(u'Neues Passwort wiederholen'),
|
|
widget=forms.PasswordInput)
|
|
send_password_mail = forms.BooleanField(required=False,
|
|
initial=False,
|
|
label=_(u'Neues Passwort per E-Mail zusenden'),
|
|
)
|
|
|
|
def __init__(self, user, *args, **kwargs):
|
|
self.user = user
|
|
super(SetPasswordForm, self).__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(
|
|
ugettext(u'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 ResetPasswordForm(forms.Form):
|
|
username = auth_forms.UsernameField(
|
|
max_length=254,
|
|
label=_(u'E-Mail-Adresse'),
|
|
widget=forms.TextInput(attrs={'autofocus': True}),
|
|
)
|
|
|
|
def clean_username(self):
|
|
username = self.cleaned_data.get('username')
|
|
return username.lower()
|