1 from forum.utils.forms import NextUrlField, UserNameField, UserEmailField, SetPasswordForm
\r
2 from forum.models import EmailFeedSetting, Question
\r
3 from django.contrib.contenttypes.models import ContentType
\r
4 from django.utils.translation import ugettext as _
\r
5 from django.contrib.auth import authenticate
\r
6 from django import forms
\r
9 class ClassicRegisterForm(SetPasswordForm):
\r
10 """ legacy registration form """
\r
12 next = NextUrlField()
\r
13 username = UserNameField()
\r
14 email = UserEmailField()
\r
15 #fields password1 and password2 are inherited
\r
16 #recaptcha = ReCaptchaField()
\r
18 class ClassicLoginForm(forms.Form):
\r
19 """ legacy account signin form """
\r
20 next = NextUrlField()
\r
21 username = UserNameField(required=False,skip_clean=True)
\r
22 password = forms.CharField(max_length=128,
\r
23 widget=forms.widgets.PasswordInput(attrs={'class':'required login'}),
\r
26 def __init__(self, data=None, files=None, auto_id='id_%s',
\r
27 prefix=None, initial=None):
\r
28 super(ClassicLoginForm, self).__init__(data, files, auto_id,
\r
30 self.user_cache = None
\r
32 def _clean_nonempty_field(self,field):
\r
34 if field in self.cleaned_data:
\r
35 value = str(self.cleaned_data[field]).strip()
\r
38 self.cleaned_data[field] = value
\r
41 def clean_username(self):
\r
42 return self._clean_nonempty_field('username')
\r
44 def clean_password(self):
\r
45 return self._clean_nonempty_field('password')
\r
49 username = self.cleaned_data['username']
\r
50 password = self.cleaned_data['password']
\r
52 self.user_cache = None
\r
53 if username and password:
\r
54 self.user_cache = authenticate(username=username, password=password)
\r
56 if self.user_cache is None:
\r
57 del self.cleaned_data['username']
\r
58 del self.cleaned_data['password']
\r
59 error_list.insert(0,(_("Please enter valid username and password "
\r
60 "(both are case-sensitive).")))
\r
61 elif self.user_cache.is_active == False:
\r
62 error_list.append(_("This account is inactive."))
\r
63 if len(error_list) > 0:
\r
64 error_list.insert(0,_('Login failed.'))
\r
65 elif password == None and username == None:
\r
66 error_list.append(_('Please enter username and password'))
\r
67 elif password == None:
\r
68 error_list.append(_('Please enter your password'))
\r
69 elif username == None:
\r
70 error_list.append(_('Please enter user name'))
\r
71 if len(error_list) > 0:
\r
72 self._errors['__all__'] = forms.util.ErrorList(error_list)
\r
73 return self.cleaned_data
\r
76 """ get authenticated user """
\r
77 return self.user_cache