# -*- 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, 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