1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
from django import forms
from allotter.models import Profile
from django.forms.extras.widgets import SelectDateWidget
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from string import digits, letters, punctuation
from allotter.models import BIRTH_YEAR_CHOICES, GENDER_CHOICES, EXAMINATION_SUBJECTS, CATEGORIES
PWD_CHARS = letters + punctuation + digits
class RegistrationForm(forms.Form):
#5 Digit Registration Number would be used as username
username = forms.IntegerField(help_text="Enter your Registration Number")
password = forms.CharField(max_length=30,
widget=forms.PasswordInput())
confirm_password = forms.CharField(max_length=30,
widget=forms.PasswordInput())
email = forms.EmailField()
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
app_no = forms.IntegerField(help_text="Enter your Application Number")
exam_code = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
choices=EXAMINATION_SUBJECTS,
help_text="Options available depends on the qualified Exam")
#All India Rank
air = forms.DecimalField(help_text="All India Rank")
dob = forms.DateField(widget=SelectDateWidget(years=BIRTH_YEAR_CHOICES))
gender = forms.ChoiceField(widget=forms.RadioSelect, choices=GENDER_CHOICES)
category = forms.ChoiceField(widget=forms.RadioSelect, choices=CATEGORIES)
#Physical Disability
pd = forms.BooleanField()
def clean_username(self):
u_name = self.cleaned_data["username"]
if str(u_name).strip(digits) and len(u_name) != 7:
msg = "Not a valid Registration Number"
raise forms.ValidationError(msg)
try:
User.objects.get(username__exact = u_name)
raise forms.ValidationError("Registration Number already exists.")
except User.DoesNotExist:
return u_name
def clean_password(self):
pwd = self.cleaned_data['password']
if pwd.strip(PWD_CHARS):
raise forms.ValidationError("Only letters, digits and punctuation \
are allowed in password")
def clean_confirm_password(self):
c_pwd = self.cleaned_data['confirm_password']
pwd = self.data['password']
if c_pwd != pwd:
raise forms.ValidationError("Passwords do not match")
return c_pwd
def save(self):
u_name = self.cleaned_data["username"]
pwd = self.cleaned_data["password"]
email = self.cleaned_data['email']
new_user = User.objects.create_user(u_name, email, pwd)
new_user.first_name = self.cleaned_data["first_name"]
new_user.last_name = self.cleaned_data["last_name"]
new_user.save()
cleaned_data = self.cleaned_data
new_profile = Profile(user=new_user)
new_profile.exam_code = cleaned_data["exam_code"]
new_profile.gender = cleaned_data["gender"]
new_profile.rank = cleaned_data["air"]
new_profile.category = cleaned_data["category"]
new_profile.dob = cleaned_date["dob"]
new_profile.application_number = cleaned_data["app_no"]
new_profile.save()
return u_name, pwd
class UserLoginForm(forms.Form):
username = forms.IntegerField(help_text="Registration Number of Applicant")
password = forms.CharField(max_length=30, widget=forms.PasswordInput(),
help_text="Keep it safe")
def clean(self):
super(UserLoginForm, self).clean()
u_name, pwd = self.cleaned_data["username"], self.cleaned_data["password"]
user = authenticate(username = u_name, password = pwd)
if not user:
raise forms.ValidationError("Invalid username/password")
return user
|