@@ -15,15 +15,13 @@ class SignUpForm(forms.Form):
15
15
gender = forms .ChoiceField (choices = (('male' , _ ('male' )), ('female' , _ ('female' ))))
16
16
first_name = forms .CharField (label = _ ('First Name' ), required = True )
17
17
last_name = forms .CharField (label = _ ('Last Name' ), required = True )
18
+ profile = forms .ModelChoiceField (required = False , queryset = Person .objects .filter (user__isnull = True ))
18
19
pass_number = forms .IntegerField (label = _ ('Pass Number' ), required = False )
19
20
address = forms .CharField (label = _ ('Address' ), required = False )
20
21
city = forms .CharField (label = _ ('City' ), required = False )
21
22
zip_code = forms .IntegerField (label = _ ('Zip Code' ), required = False )
22
23
mobile_number = forms .CharField (label = _ ('Mobile Number' ), required = False )
23
24
24
- profile = forms .ModelChoiceField (required = False ,
25
- queryset = Person .objects .filter (first_name = first_name ).filter (last_name = last_name ).filter (user__isnull = True ))
26
-
27
25
def clean_username (self ):
28
26
data = self .cleaned_data ['username' ]
29
27
try :
@@ -41,14 +39,22 @@ def clean_email(self):
41
39
raise forms .ValidationError (
42
40
_ ('A user with this email is already registered.' ))
43
41
44
- def clean_pass_number (self ):
45
- data = self .cleaned_data ['pass_number' ]
42
+ def clean (self ):
43
+ cleaned_data = super (SignUpForm , self ).clean ()
44
+ pass_number = cleaned_data ['pass_number' ]
45
+ profile = cleaned_data ['profile' ] or {'id' : None }
46
+
47
+ # check if pass number is unique
46
48
try :
47
- Person .objects .get (pass_number = data )
49
+ Person .objects .exclude ( id = profile . id ). get (pass_number = pass_number )
48
50
except Person .DoesNotExist :
49
- return data
50
- raise forms .ValidationError (
51
- _ ('A player with this pass number is already registered.' ))
51
+ return cleaned_data
52
+
53
+ msg = _ ('A user with this pass number does already exist!' )
54
+ self ._errors ['pass_number' ] = self .error_class ([msg ])
55
+ del cleaned_data ['pass_number' ]
56
+
57
+ return cleaned_data
52
58
53
59
# def clean(self):
54
60
# cleaned_data = super(SignUpForm, self).clean()
0 commit comments