Files
django-dav-events/dav_auth/forms.py

75 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 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(label=_(u'Neues Passwort'),
widget=forms.PasswordInput)
new_password_repeat = forms.CharField(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 CreateAndSendPasswordForm(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()