Skip to content

Commit 08d8fff

Browse files
committed
Use snipt registration form, block emails
1 parent ae85962 commit 08d8fff

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

urls.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from views import amazon_search, amazon_image, lexers, pro_signup, sitemap, tags, pro_signup_complete
22
from django.conf.urls.defaults import include, patterns, url
33
from django.views.generic.simple import direct_to_template
4-
from registration.forms import RegistrationFormUniqueEmail
4+
from utils.forms import SniptRegistrationForm
55
from django.http import HttpResponseRedirect
66
from django.contrib import admin
77
from snipts.views import search
@@ -53,7 +53,7 @@
5353
url(r'^signup/$',
5454
'registration.views.register', {
5555
'backend': 'registration.backends.default.DefaultBackend',
56-
'form_class': RegistrationFormUniqueEmail,
56+
'form_class': SniptRegistrationForm,
5757
},
5858
name='registration_register'),
5959
url(r'', include('registration.backends.default.urls')),

utils/forms.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from django.utils.translation import ugettext_lazy as _
2+
from registration.forms import RegistrationForm
3+
from django.contrib.auth.models import User
4+
from django import forms
5+
6+
7+
class SniptRegistrationForm(RegistrationForm):
8+
"""
9+
Subclass of ``RegistrationForm`` which enforces uniqueness of
10+
email addresses.
11+
12+
"""
13+
def clean_username(self):
14+
"""
15+
Validate that the username is alphanumeric and is not already
16+
in use.
17+
18+
"""
19+
existing = User.objects.filter(username__iexact=self.cleaned_data['username'])
20+
if existing.exists():
21+
raise forms.ValidationError(_("A user with that username already exists."))
22+
23+
elif '@' in self.cleaned_data['username']:
24+
raise forms.ValidationError(_("Cannot have '@' in username."))
25+
elif '.' in self.cleaned_data['username']:
26+
raise forms.ValidationError(_("Cannot have '.' in username."))
27+
elif '+' in self.cleaned_data['username']:
28+
raise forms.ValidationError(_("Cannot have '+' in username."))
29+
30+
else:
31+
return self.cleaned_data['username']
32+
33+
def clean_email(self):
34+
"""
35+
Validate that the supplied email address is unique for the
36+
site.
37+
38+
"""
39+
if User.objects.filter(email__iexact=self.cleaned_data['email']):
40+
raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
41+
return self.cleaned_data['email']

0 commit comments

Comments
 (0)