This registers a users taking data from a submitted form, sends a confirmation email, activates the account when the confirmation link is clicked and logs the user in
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | def register(request):
if request.method == 'POST':
captcha_error = ""
captcha_response = captcha.submit(
request.POST.get("recaptcha_challenge_field", None),
request.POST.get("recaptcha_response_field", None),
settings.RECAPTCHA_PRIVATE_KEY,
request.META.get("REMOTE_ADDR", None))
if not captcha_response.is_valid:
captcha_error = "&error=%s" % captcha_response.error_code
c = {}
c.update(csrf(request))
c['repetir'] = True
c['header'] = "register"
return render_to_response('register.html', c, context_instance=RequestContext(request))
else:
if error_register(request):
c = {}
c.update(csrf(request))
c['repetir'] = True
c['header'] = "register"
return render_to_response('register.html', c, context_instance=RequestContext(request))
else:
username = clean_username(request.POST['user'])
password = request.POST['password']
email = request.POST['email']
user = User.objects.create_user(username, email, password)
user.is_active = False
user.save()
confirmation_code = ''.join(tehrandom.choice(string.ascii_uppercase + string.digits + string.ascii_lowercase) for x in range(33))
p = Profile(user=user, confirmation_code=confirmation_code)
p.save()
send_registration_confirmation(user)
return HttpResponseRedirect('../../../../../')
else:
c = create_c(request)
c['header'] = "register"
return render_to_response('register.html', c, context_instance=RequestContext(request))
def send_registration_confirmation(user):
p = user.get_profile()
title = "Gsick account confirmation"
content = "http://www.gsick.com/confirm/" + str(p.confirmation_code) + "/" + user.username
send_mail(title, content, '[email protected]', [user.email], fail_silently=False)
def confirm(request, confirmation_code, username):
try:
user = User.objects.get(username=username)
profile = user.get_profile()
if profile.confirmation_code == confirmation_code and user.date_joined > (datetime.datetime.now()-datetime.timedelta(days=1)):
user.is_active = True
user.save()
user.backend='django.contrib.auth.backends.ModelBackend'
auth_login(request,user)
return HttpResponseRedirect('../../../../../')
except:
return HttpResponseRedirect('../../../../../')
def error_register(request):
username = request.POST['user']
password = request.POST['password']
email = request.POST['email']
if not clean_username(username):
return True
if username.replace(" ", "") == "" or password.replace(" ", "") == "":
return True
if len(username) > 15 or len(password) > 50:
return True
if not "@" in email:
return True
try:
if User.objects.get(username=username):
return True
except:
pass
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 9 months, 3 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months ago
- Serializer factory with Django Rest Framework by julio 1 year, 4 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 5 months ago
- Help text hyperlinks by sa2812 1 year, 6 months ago
Comments
What's creation_c ? (ok, one of your other snippet). What kind of captcha do you use ? What's tehrandom ?
#
Please login first before commenting.