Use snipt registration form, block emails

master
Nick Sergeant 2012-07-23 15:42:15 -04:00
parent ae85962689
commit 08d8fff0b2
2 changed files with 43 additions and 2 deletions

View File

@ -1,7 +1,7 @@
from views import amazon_search, amazon_image, lexers, pro_signup, sitemap, tags, pro_signup_complete from views import amazon_search, amazon_image, lexers, pro_signup, sitemap, tags, pro_signup_complete
from django.conf.urls.defaults import include, patterns, url from django.conf.urls.defaults import include, patterns, url
from django.views.generic.simple import direct_to_template from django.views.generic.simple import direct_to_template
from registration.forms import RegistrationFormUniqueEmail from utils.forms import SniptRegistrationForm
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.contrib import admin from django.contrib import admin
from snipts.views import search from snipts.views import search
@ -53,7 +53,7 @@ urlpatterns = patterns('',
url(r'^signup/$', url(r'^signup/$',
'registration.views.register', { 'registration.views.register', {
'backend': 'registration.backends.default.DefaultBackend', 'backend': 'registration.backends.default.DefaultBackend',
'form_class': RegistrationFormUniqueEmail, 'form_class': SniptRegistrationForm,
}, },
name='registration_register'), name='registration_register'),
url(r'', include('registration.backends.default.urls')), url(r'', include('registration.backends.default.urls')),

41
utils/forms.py Normal file
View File

@ -0,0 +1,41 @@
from django.utils.translation import ugettext_lazy as _
from registration.forms import RegistrationForm
from django.contrib.auth.models import User
from django import forms
class SniptRegistrationForm(RegistrationForm):
"""
Subclass of ``RegistrationForm`` which enforces uniqueness of
email addresses.
"""
def clean_username(self):
"""
Validate that the username is alphanumeric and is not already
in use.
"""
existing = User.objects.filter(username__iexact=self.cleaned_data['username'])
if existing.exists():
raise forms.ValidationError(_("A user with that username already exists."))
elif '@' in self.cleaned_data['username']:
raise forms.ValidationError(_("Cannot have '@' in username."))
elif '.' in self.cleaned_data['username']:
raise forms.ValidationError(_("Cannot have '.' in username."))
elif '+' in self.cleaned_data['username']:
raise forms.ValidationError(_("Cannot have '+' in username."))
else:
return self.cleaned_data['username']
def clean_email(self):
"""
Validate that the supplied email address is unique for the
site.
"""
if User.objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
return self.cleaned_data['email']