Skip to content

Commit 5cbcb69

Browse files
committed
A couple of fixes to enable specifying an existing profile on sign up
1 parent 9c89487 commit 5cbcb69

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

Diff for: api.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def sign_up(request):
186186

187187
user = User.objects.create(username=username, password=password, first_name=first_name, last_name=last_name, email=email)
188188

189-
profile = form.cleaned_data['profile'] or Person.objects.create(user=user)
189+
profile = form.cleaned_data['profile'] or Person.objects.create()
190190
profile.first_name = first_name
191191
profile.last_name = last_name
192192
profile.gender = gender
@@ -195,6 +195,7 @@ def sign_up(request):
195195
profile.city = city
196196
profile.zip_code = zip_code
197197
profile.mobile_number = mobile_number
198+
profile.user = user
198199

199200
# Build the activation key
200201
salt = sha.new(str(random())).hexdigest()[:5]

Diff for: forms.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ class SignUpForm(forms.Form):
1515
gender = forms.ChoiceField(choices=(('male', _('male')), ('female', _('female'))))
1616
first_name = forms.CharField(label=_('First Name'), required=True)
1717
last_name = forms.CharField(label=_('Last Name'), required=True)
18+
profile = forms.ModelChoiceField(required=False, queryset=Person.objects.filter(user__isnull=True))
1819
pass_number = forms.IntegerField(label=_('Pass Number'), required=False)
1920
address = forms.CharField(label=_('Address'), required=False)
2021
city = forms.CharField(label=_('City'), required=False)
2122
zip_code = forms.IntegerField(label=_('Zip Code'), required=False)
2223
mobile_number = forms.CharField(label=_('Mobile Number'), required=False)
2324

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-
2725
def clean_username(self):
2826
data = self.cleaned_data['username']
2927
try:
@@ -41,14 +39,22 @@ def clean_email(self):
4139
raise forms.ValidationError(
4240
_('A user with this email is already registered.'))
4341

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
4648
try:
47-
Person.objects.get(pass_number=data)
49+
Person.objects.exclude(id=profile.id).get(pass_number=pass_number)
4850
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
5258

5359
# def clean(self):
5460
# cleaned_data = super(SignUpForm, self).clean()

0 commit comments

Comments
 (0)