Commit d909e891 by Bridger Maxwell

Added setting to generate random user credentials to test account creation.…

Added setting to generate random user credentials to test account creation. Might have accidentally stomped other changes to settings.py
parent d65d2680
...@@ -9,6 +9,7 @@ from models import Registration, UserProfile ...@@ -9,6 +9,7 @@ from models import Registration, UserProfile
from django.conf import settings from django.conf import settings
from django.core.context_processors import csrf from django.core.context_processors import csrf
from django.core.validators import validate_email, validate_slug from django.core.validators import validate_email, validate_slug
import random, string
def csrf_token(context): def csrf_token(context):
csrf_token = context.get('csrf_token', '') csrf_token = context.get('csrf_token', '')
...@@ -88,22 +89,25 @@ def change_setting(request): ...@@ -88,22 +89,25 @@ def change_setting(request):
'language':up.language, 'language':up.language,
'location':up.location,})) 'location':up.location,}))
def create_account(request): def create_account(request, post_override=None):
js={'success':False} js={'success':False}
post_vars = post_override if post_override else request.POST
# Confirm we have a properly formed request # Confirm we have a properly formed request
for a in ['username', 'email', 'password', 'location', 'language', 'name']: for a in ['username', 'email', 'password', 'location', 'language', 'name']:
if a not in request.POST: if a not in post_vars:
js['value']="Error (401 {field}). E-mail us.".format(field=a) js['value']="Error (401 {field}). E-mail us.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
if request.POST['honor_code']!=u'true': if post_vars['honor_code']!=u'true':
js['value']="To enroll, you must follow the honor code.".format(field=a) js['value']="To enroll, you must follow the honor code.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
if request.POST['terms_of_service']!=u'true': if post_vars['terms_of_service']!=u'true':
js['value']="You must accept the terms of service.".format(field=a) js['value']="You must accept the terms of service.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
...@@ -113,18 +117,18 @@ def create_account(request): ...@@ -113,18 +117,18 @@ def create_account(request):
# this is a good idea # this is a good idea
# TODO: Check password is sane # TODO: Check password is sane
for a in ['username', 'email', 'password', 'terms_of_service', 'honor_code']: for a in ['username', 'email', 'password', 'terms_of_service', 'honor_code']:
if len(request.POST[a])<2: if len(post_vars[a])<2:
js['value']="{field} is required.".format(field=a) js['value']="{field} is required.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
try: try:
validate_email(request.POST['email']) validate_email(post_vars['email'])
except: except:
js['value']="Valid e-mail is required.".format(field=a) js['value']="Valid e-mail is required.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
try: try:
validate_slug(request.POST['username']) validate_slug(post_vars['username'])
except: except:
js['value']="Username should only consist of A-Z and 0-9.".format(field=a) js['value']="Username should only consist of A-Z and 0-9.".format(field=a)
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
...@@ -132,18 +136,18 @@ def create_account(request): ...@@ -132,18 +136,18 @@ def create_account(request):
# Confirm username and e-mail are unique. TODO: This should be in a transaction # Confirm username and e-mail are unique. TODO: This should be in a transaction
if len(User.objects.filter(username=request.POST['username']))>0: if len(User.objects.filter(username=post_vars['username']))>0:
js['value']="An account with this username already exists." js['value']="An account with this username already exists."
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
if len(User.objects.filter(email=request.POST['email']))>0: if len(User.objects.filter(email=post_vars['email']))>0:
js['value']="An account with this e-mail already exists." js['value']="An account with this e-mail already exists."
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
u=User(username=request.POST['username'], u=User(username=post_vars['username'],
email=request.POST['email'], email=post_vars['email'],
is_active=False) is_active=False)
u.set_password(request.POST['password']) u.set_password(post_vars['password'])
r=Registration() r=Registration()
# TODO: Rearrange so that if part of the process fails, the whole process fails. # TODO: Rearrange so that if part of the process fails, the whole process fails.
# Right now, we can have e.g. no registration e-mail sent out and a zombie account # Right now, we can have e.g. no registration e-mail sent out and a zombie account
...@@ -151,12 +155,12 @@ def create_account(request): ...@@ -151,12 +155,12 @@ def create_account(request):
r.register(u) r.register(u)
up=UserProfile(user=u) up=UserProfile(user=u)
up.name=request.POST['name'] up.name=post_vars['name']
up.language=request.POST['language'] up.language=post_vars['language']
up.location=request.POST['location'] up.location=post_vars['location']
up.save() up.save()
d={'name':request.POST['name'], d={'name':post_vars['name'],
'key':r.activation_key, 'key':r.activation_key,
'site':settings.SITE_NAME} 'site':settings.SITE_NAME}
...@@ -172,10 +176,35 @@ def create_account(request): ...@@ -172,10 +176,35 @@ def create_account(request):
return HttpResponse(json.dumps(js)) return HttpResponse(json.dumps(js))
js={'success':True, js={'success':True,
'value':render_to_string('registration/reg_complete.html', {'email':request.POST['email'], 'value':render_to_string('registration/reg_complete.html', {'email':post_vars['email'],
'csrf':csrf(request)['csrf_token']})} 'csrf':csrf(request)['csrf_token']})}
return HttpResponse(json.dumps(js), mimetype="application/json") return HttpResponse(json.dumps(js), mimetype="application/json")
def create_random_account(create_account_function):
def id_generator(size=6, chars=string.ascii_uppercase + string.ascii_lowercase + string.digits):
return ''.join(random.choice(chars) for x in range(size))
def inner_create_random_account(request):
post_override= {'username' : "random_" + id_generator(),
'email' : id_generator(size=10, chars=string.ascii_lowercase) + "_lover@mitxtest.com",
'password' : id_generator(),
'location' : id_generator(size=5, chars=string.ascii_uppercase),
'language' : id_generator(size=5, chars=string.ascii_uppercase) + "ish",
'name' : id_generator(size=5, chars=string.ascii_lowercase) + " " + id_generator(size=7, chars=string.ascii_lowercase),
'honor_code' : u'true',
'terms_of_service' : u'true',}
print "Creating account: " , post_override
return create_account_function(request, post_override = post_override)
return inner_create_random_account
if settings.GENERATE_RANDOM_USER_CREDENTIALS:
create_account = create_random_account(create_account)
def activate_account(request, key): def activate_account(request, key):
r=Registration.objects.filter(activation_key=key) r=Registration.objects.filter(activation_key=key)
if len(r)==1: if len(r)==1:
......
PERFSTATS = False
COURSEWARE_ENABLED = True COURSEWARE_ENABLED = True
ASKBOT_ENABLED = False
if 'ASKBOT_ENABLED' not in locals():
ASKBOT_ENABLED = True
if not COURSEWARE_ENABLED: if not COURSEWARE_ENABLED:
ASKBOT_ENABLED = False ASKBOT_ENABLED = False
...@@ -13,6 +10,9 @@ SITE_NAME = "localhost:8000" ...@@ -13,6 +10,9 @@ SITE_NAME = "localhost:8000"
DEFAULT_FROM_EMAIL = 'registration@mitx.mit.edu' DEFAULT_FROM_EMAIL = 'registration@mitx.mit.edu'
DEFAULT_FEEDBACK_EMAIL = 'feedback@mitx.mit.edu' DEFAULT_FEEDBACK_EMAIL = 'feedback@mitx.mit.edu'
# For testing the login system
GENERATE_RANDOM_USER_CREDENTIALS = False
WIKI_REQUIRE_LOGIN_EDIT = True WIKI_REQUIRE_LOGIN_EDIT = True
WIKI_REQUIRE_LOGIN_VIEW = True WIKI_REQUIRE_LOGIN_VIEW = True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment