gremmie@1: """views for the accounts application"""
gremmie@1: 
gremmie@1: import datetime
gremmie@1: from django.shortcuts import render_to_response
gremmie@1: from django.template import RequestContext
gremmie@1: from django.contrib import auth
gremmie@1: from django.http import HttpResponseRedirect
gremmie@1: from django.core.urlresolvers import reverse
bgneal@6: from django.conf import settings
gremmie@1: 
gremmie@1: from accounts.models import PendingUser
gremmie@1: from accounts.forms import RegisterForm
gremmie@1: 
gremmie@1: 
gremmie@1: #######################################################################
gremmie@1: 
gremmie@1: def register(request):
gremmie@1:    if request.user.is_authenticated():
gremmie@1:       return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
gremmie@1: 
gremmie@1:    if request.method == 'POST':
gremmie@1:       form = RegisterForm(request.POST)
gremmie@1:       if form.is_valid():
gremmie@1:          form.save()
gremmie@1:          return HttpResponseRedirect(reverse('accounts.views.register_thanks'))
gremmie@1:    else:
gremmie@1:       form = RegisterForm()
gremmie@1: 
gremmie@1:    return render_to_response('accounts/register.html', {
gremmie@1:             'form': form,
gremmie@1:          },
gremmie@1:          context_instance = RequestContext(request))
gremmie@1: 
gremmie@1: #######################################################################
gremmie@1: 
gremmie@1: def register_thanks(request):
gremmie@1:    if request.user.is_authenticated():
gremmie@1:       return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
gremmie@1: 
gremmie@1:    return render_to_response('accounts/register_thanks.html',
gremmie@1:          context_instance = RequestContext(request))
gremmie@1: 
gremmie@1: #######################################################################
gremmie@1: 
gremmie@1: def register_confirm(request, username, key):
gremmie@1:    if request.user.is_authenticated():
gremmie@1:       return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
gremmie@1:    
gremmie@1:    # purge expired users
gremmie@1: 
gremmie@1:    PendingUser.objects.purge_expired()
gremmie@1: 
gremmie@1:    try:
gremmie@1:       pending_user = PendingUser.objects.get(username = username)
gremmie@1:    except PendingUser.DoesNotExist:
gremmie@1:       return render_to_response('accounts/register_failure.html', {
gremmie@1:          'username': username,
gremmie@1:          },
gremmie@1:          context_instance = RequestContext(request))
gremmie@1: 
gremmie@1:    if pending_user.key != key:
gremmie@1:       return render_to_response('accounts/register_failure.html', {
gremmie@1:          'username': username,
gremmie@1:          },
gremmie@1:          context_instance = RequestContext(request))
gremmie@1: 
gremmie@1:    new_user = auth.models.User()
gremmie@1: 
gremmie@1:    new_user.username = pending_user.username
gremmie@1:    new_user.first_name = ''
gremmie@1:    new_user.last_name = ''
gremmie@1:    new_user.email = pending_user.email
gremmie@1:    new_user.password = pending_user.password    # already been hashed
gremmie@1:    new_user.is_staff = False
gremmie@1:    new_user.is_active = True
gremmie@1:    new_user.is_superuser = False
gremmie@1:    new_user.last_login = datetime.datetime.now()
gremmie@1:    new_user.date_joined = new_user.last_login
gremmie@1: 
gremmie@1:    new_user.save()
gremmie@1:    pending_user.delete()
gremmie@1: 
gremmie@1:    return render_to_response('accounts/register_success.html', {
gremmie@1:       'username': username,
gremmie@1:       },
gremmie@1:       context_instance = RequestContext(request))