from django import forms
from django.conf import settings
from django.contrib.auth import authenticate
-from django.core.exceptions import ValidationError
+from django.contrib.auth.forms import AuthenticationForm
+from django.forms import ValidationError
from django.utils.translation import ugettext_lazy as _
from models import LoginTicket
import datetime
__all__ = ['LoginForm', ]
-class LoginForm(forms.Form):
- username = forms.CharField(max_length=30, label=_('username'))
- password = forms.CharField(widget=forms.PasswordInput, label=_('password'))
+class LoginForm(AuthenticationForm):
lt = forms.CharField(widget=forms.HiddenInput)
service = forms.CharField(widget=forms.HiddenInput, required=False)
- def __init__(self, *args, **kwargs):
- super(LoginForm, self).__init__(*args, **kwargs)
- self._user = None
-
def clean_lt(self):
ticket = self.cleaned_data['lt']
timeframe = datetime.datetime.now() - \
return ticket
def clean(self):
- username = self.cleaned_data.get('username')
- password = self.cleaned_data.get('password')
- user = authenticate(username=username, password=password)
- if user is None:
- raise ValidationError(_('Incorrect username and/or password.'))
- if not user.is_active:
- raise ValidationError(_('This account is disabled.'))
- self._user = user
+ AuthenticationForm.clean(self)
self.cleaned_data.get('lt').delete()
return self.cleaned_data
- def get_user(self):
- return self._user
-
def get_errors(self):
errors = []
for k, error in self.errors.items():