comparison accounts/views.py @ 905:be233ba7ca31

Reworked registration process. Previous one proved too challenging for some humans. Hopefully made it simpler but still unusual to confuse bots. Increased test coverage also.
author Brian Neal <bgneal@gmail.com>
date Sun, 08 Mar 2015 11:06:07 -0500
parents 004b3a90de66
children 6dd1f0065859
comparison
equal deleted inserted replaced
904:d4479ebbd118 905:be233ba7ca31
1 """ 1 """
2 Views for the accounts application. 2 Views for the accounts application.
3 3
4 """ 4 """
5 import json
5 import logging 6 import logging
6 7
8 from django.http import HttpResponse
7 from django.shortcuts import render, redirect 9 from django.shortcuts import render, redirect
8 from django.conf import settings 10 from django.conf import settings
9 11
10 from accounts.models import PendingUser 12 from accounts.models import PendingUser
11 from accounts.forms import RegisterForm, ForgotUsernameForm 13 from accounts.forms import RegisterForm
14 from accounts.forms import RegisterCodeForm
15 from accounts.forms import ForgotUsernameForm
12 from accounts import create_new_user 16 from accounts import create_new_user
13 from antispam.decorators import log_auth_failures 17 from antispam.decorators import log_auth_failures
14 18
15 19
16 logger = logging.getLogger('auth') 20 logger = logging.getLogger('auth')
23 return redirect(settings.LOGIN_REDIRECT_URL) 27 return redirect(settings.LOGIN_REDIRECT_URL)
24 28
25 if request.method == 'POST': 29 if request.method == 'POST':
26 form = RegisterForm(request.POST, ip=request.META.get('REMOTE_ADDR', '?')) 30 form = RegisterForm(request.POST, ip=request.META.get('REMOTE_ADDR', '?'))
27 if form.is_valid(): 31 if form.is_valid():
28 form.save() 32 form.save(request)
29 return redirect('accounts.views.register_thanks') 33 return redirect('accounts-register1')
30 else: 34 else:
31 form = RegisterForm() 35 form = RegisterForm()
32 36
33 return render(request, 'accounts/register.html', {'form': form}) 37 return render(request, 'accounts/register.html', {'form': form})
38
39 #######################################################################
40
41 def register1(request):
42 """Displays the registration code."""
43 if request.user.is_authenticated():
44 return redirect(settings.LOGIN_REDIRECT_URL)
45
46 return render(request, 'accounts/register1.html')
47
48 #######################################################################
49
50 @log_auth_failures('Register')
51 def register2(request):
52 """Processes the registration code and creates the user."""
53 if request.user.is_authenticated():
54 return redirect(settings.LOGIN_REDIRECT_URL)
55
56 if request.method == 'POST':
57 form = RegisterCodeForm(request.POST,
58 session=request.session,
59 ip=request.META.get('REMOTE_ADDR', '?'))
60 if form.is_valid():
61 form.save()
62 return redirect('accounts-register_thanks')
63 else:
64 form = RegisterCodeForm()
65
66 return render(request, 'accounts/register2.html', {'form': form})
67
68 #######################################################################
69
70 def get_code(request):
71 code = {'code': 'FAIL-123'}
72 reg_info = request.session.get('reg_info')
73 if reg_info:
74 code['code'] = reg_info.get('code', code['code'])
75
76 return HttpResponse(json.dumps(code), content_type='application/json')
34 77
35 ####################################################################### 78 #######################################################################
36 79
37 def register_thanks(request): 80 def register_thanks(request):
38 if request.user.is_authenticated(): 81 if request.user.is_authenticated():