]> git.openstreetmap.org Git - osqa.git/blob - forum_modules/localauth/forms.py
59f5d5656527750b6d7a2caca9b8fa0937e53eb2
[osqa.git] / forum_modules / localauth / forms.py
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
7 import logging\r
8 \r
9 class ClassicRegisterForm(SetPasswordForm):\r
10     """ legacy registration form """\r
11 \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
17 \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
24             required=False)\r
25 \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
29                 prefix, initial)\r
30         self.user_cache = None\r
31 \r
32     def _clean_nonempty_field(self,field):\r
33         value = None\r
34         if field in self.cleaned_data:\r
35             value = str(self.cleaned_data[field]).strip()\r
36             if value == '':\r
37                 value = None\r
38         self.cleaned_data[field] = value\r
39         return value\r
40 \r
41     def clean_username(self):\r
42         return self._clean_nonempty_field('username')\r
43 \r
44     def clean_password(self):\r
45         return self._clean_nonempty_field('password')\r
46 \r
47     def clean(self):\r
48         error_list = []\r
49         username = self.cleaned_data['username']\r
50         password = self.cleaned_data['password']\r
51 \r
52         self.user_cache = None\r
53         if username and password:\r
54             self.user_cache = authenticate(username=username, password=password)\r
55 \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
74 \r
75     def get_user(self):\r
76         """ get authenticated user """\r
77         return self.user_cache