- Author:
- catellar
- Posted:
- August 24, 2011
- Language:
- Python
- Version:
- 1.3
- Tags:
- registration email register confirmation
- Score:
- 0 (after 2 ratings)
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
- "Magic Link" Management Command by webology 3 weeks, 4 days ago
- Closest ORM models to a latitude/longitude point by simonw 3 weeks, 4 days ago
- Log the time taken to execute each DB query by kennyx46 3 weeks, 4 days ago
- django database snippet by ItsRLuo 1 month ago
- Serialize a model instance by chriswedgwood 1 month, 4 weeks 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.