From 67d5552db4e48582587b0a09ce5659422d2e2d25 Mon Sep 17 00:00:00 2001 From: Aamir Khan Date: Sun, 1 Jul 2012 06:14:25 -0400 Subject: Basic user registration up --- views/accounts.py | 26 ++++++++++++++++++++++++++ views/forms.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) (limited to 'views') diff --git a/views/accounts.py b/views/accounts.py index 1eeb8c9..b79943d 100644 --- a/views/accounts.py +++ b/views/accounts.py @@ -18,6 +18,7 @@ from django.utils.translation import gettext as _ from urllib2 import HTTPError from urlparse import urlparse +from forms import RegistrationForm from gsoc.utils import log def user_logout(request): @@ -65,3 +66,28 @@ def user_profile(request, user_email = None): }) return HttpResponse(t.render(c)) + + +def user_registration(request): + if request.user.is_authenticated(): + # Already registed, redirect back to home page + return redirect('index') + + if request.POST: + form = RegistrationForm(request.POST) + if form.is_valid(): + # Save the user data. + form.save(form.cleaned_data) + user = authenticate(username=form.cleaned_data['username'], + password=form.cleaned_data['password1']) + + if user is not None: + log('debug', user) + if user.is_active: + login(request,user) + return redirect('index') + else: + form = RegistrationForm() + + return render_to_response('register.html', {'form': form}, context_instance=RequestContext(request)) + diff --git a/views/forms.py b/views/forms.py index a2aac0e..97e5550 100644 --- a/views/forms.py +++ b/views/forms.py @@ -1,4 +1,36 @@ from django import forms +from django.core import validators +from django.contrib.auth.models import User + +def isValidUsername(username): + try: + User.objects.get(username=username) + except User.DoesNotExist: + return + raise validators.ValidationError('The username "%s" is already taken.' % username) + +class RegistrationForm(forms.Form): + + username = forms.CharField(label='username', help_text=None, + widget=forms.TextInput( + attrs={'placeholder': 'username...'} + ), required = True, validators=[isValidUsername] + ) + + email = forms.EmailField(required=True) + + password1 = forms.CharField(widget=forms.PasswordInput) + + password2 = forms.CharField(widget=forms.PasswordInput) + + def save(self, new_user_data): + u = User.objects.create_user(new_user_data['username'], + new_user_data['email'], + new_user_data['password1']) + u.is_active = True + u.save() + return u + class AddTagForm(forms.Form): tag = forms.CharField(label='', help_text=None, -- cgit