Example #1
0
def createteacheraccount(request):
	if request.method == 'POST':
		form = TeacherSignupForm(request.POST)
		if form.is_valid():
			username = form.cleaned_data['username']
			password = form.cleaned_data['password']
			email = form.cleaned_data['email']
			user = User.objects.create_user(username, email, password)
			profile = user.profile
			profile.upgraded = True
			profile.save()
			newclass = Classroom(name = form.cleaned_data['classroom_name'], school=form.cleaned_data['school'], grade=form.cleaned_data['grade_level'], num_students=0)
			newclass.save()
			ct = ClassroomTeacherRel(user=user, classroom=newclass, date=timezone.now())
			ct.save()
			user.first_name = form.cleaned_data['first']
			user.last_name = form.cleaned_data['last']
			user.save()
			bodytext = mbcopy.TEACHER_ACCOUNT_CREATED_EMAIL[1].format(form.cleaned_data['username'],form.cleaned_data['password'])
			send_mail_threaded(mbcopy.TEACHER_ACCOUNT_CREATED_EMAIL[0], bodytext, "*****@*****.**", [form.cleaned_data['email']])
			if user is None:
				print "User failed to create despite clean fields"
				return json_response({"result":"error", "errors":{"error": "User failed to create despite clean fields"}})
			user = perform_signin(request, username, password)
			if user is None:
				print "User was created but login failed"
				return json_response({"result":"error", "errors":{"error": "User was created but login failed"}})
			return json_response({'result':'success', 'username':username})
		else:
			return json_response({'result':'error', 'errors':form.errors})
	else:
		return json_response({'result':'error', 'errors':{'method':'Method must be POST'}})
Example #2
0
def signin(request):
	try:
		user = perform_signin(request, request.POST['username'], request.POST['password'])
		if user:
			return json_response({"success":True, "sessionid":request.session.session_key})
		else:
			return json_response({"success":False, "error":"Invalid username or password."})
	except Exception as e:
		print e
		return json_response({"success":False, "error":"Invalid parameters."})
Example #3
0
def signin(request):
	if request.method == 'POST':
		form = SignInForm(request.POST)
		if form.is_valid():
			user = None
			try:
				#truncated_username = form.cleaned_data['username'][:30]
				#user = perform_signin(request, truncated_username, form.cleaned_data['password'])
				user = perform_signin(request, form.cleaned_data['username'], form.cleaned_data['password'])
			except:
				user = None
			if user:
				return json_response({'result':'success', 'username':user.username})
			else:
				return json_response({'result':'error', 'errors':{"error":"Wrong username or password!"}})
		else:
			return json_response({'result':'error', 'errors':form.errors})
	else:
		return json_response({'result':'error', 'errors':{'method':'Method must be POST'}})			
Example #4
0
def createaccount(request):
	if request.method == 'POST':
		form = CreateAccountForm(request.POST)
		if form.is_valid():
			username = form.cleaned_data['username']
			password = form.cleaned_data['password']
			user = User.objects.create_user(username, '*****@*****.**', password)
			if user is None:
				print "User failed to create despite clean fields"
				return json_response({"result":"error", "errors":{"error": "User failed to create despite clean fields"}})
			user = perform_signin(request, username, password)
			if user is None:
				print "User was created but login failed"
				return json_response({"result":"error", "errors":{"error": "User was created but login failed"}})
			return json_response({'result':'success', 'username':username})
		else:
			return json_response({'result':'error', 'errors':form.errors})
		
	else:
		return json_response({'result':'error', 'errors':{'method':'Method must be POST'}})
Example #5
0
def register(request):
	try:
		username = request.POST['username']
		password = request.POST['password']

		# fix bad usernames inputted by the client ...
		username2 = ''.join(c for c in username if c.islower() or c.isupper())	
		if username2 != username:
			return json_response({"success":False,"error":"User name can't use special characters."})
		if len(username) < 5:
			return json_response({"success":False,"error":"User name needs to be longer.."})
		logger.error('hi. this is a log. username and username2 are:' + username + ',' + username2)

		User.objects.create_user(username, request.POST['email'], password)
		user = perform_signin(request, username, password)
		if user:
			return json_response({"success":True, "sessionid":request.session.session_key})
		else:
			print "User successfully created but couldn't sign in!"
			return json_response({"success":False, "error":"Something went wrong"})
	except Exception as e:
		print e
		return json_response({"success":False, "error":"Invalid parameters."})
Example #6
0
def educents(request, code):
	try:
		code_model = EducentsCode.objects.get(code=code)
	except EducentsCode.DoesNotExist:
		form = EducentsCodeForm()
		return renderWithNav(request, "educents.html", {"form":form,"code":code})
	if request.method=="POST":
		form = EducentsCodeForm(request.POST)
		if form.is_valid():
			ip = get_ip(request)
			email = form.cleaned_data['email']
			#truncated_username = email[:20]
			password = form.cleaned_data['password']
			classroom_name = form.cleaned_data['classroom_name']

			user = None
			# Let's check if they already have an account and they've gone to this page
			# because they forgot / didn't know to log in
			matchusers = User.objects.filter(email=email)
			if matchusers.count() == 0:
				# They don't have an account, let's try to make one
				try:
					#user = User.objects.create_user(email, email, password)
					user = User.objects.create_user(truncated_username, email, password)
				except:
					# Must be a duplicate account
					errors = form._errors.setdefault("email", ErrorList())
					errors.append(u"That email address is already in use")
					return renderWithNav(request, "educents.html", {"form":form,"code":code})

				# This second step (logging in after successfully registering) should not ever fail.
				try:
					user = perform_signin(request, email, password)
				except:
					log_error(request)
					errors = form._errors.setdefault("email", ErrorList())
					errors.append(u"Something went wrong! Try a different email address please.")					
					return renderWithNav(request, "educents.html", {"form":form,"code":code})
				analytics.alias(request, user)
				analytics.person_set_once(user, {"$created":timezone.now()})
			else:
				errors = form._errors.setdefault("email", ErrorList())
				errors.append(u"That email address is in use, please use a different one.")					
				return renderWithNav(request, "educents.html", {"form":form,"code":code})				

			if user is None:
				log_and_email(request, "User is None somehow in educents POST handler")
				errors = form._errors.setdefault("email", ErrorList())
				errors.append(u"Something went wrong! Try a different email address please.")					
				return renderWithNav(request, "educents.html", {"form":form,"code":code})
			
			analytics.person_increment(user, "Sessions Started")
			analytics.person_append(user, "Sessions", str(timezone.now()))
			# Now that we're logged in let's make a classroom unless one exists
			ctr = None
			classroom = None

			# Okay cool let's make the classroom and relate it to this user with a CTR
			classroom = Classroom(name=classroom_name, num_students=0)
			classroom.save()
			classroom_log(classroom, "Classroom created from start")
			ctr = ClassroomTeacherRel(user=user, classroom=classroom, date=timezone.now())
			ctr.save()

			analytics.person_append(user, "Classrooms", classroom.name)
			# Set the session value so we can keep track of which classroom they're monitoring
			# currently if they have multiple classes
			request.session['classroom_id'] = classroom.id

			send_mail_threaded("New educents teacher started a session - " + str(timezone.now()), "Username: "******"*****@*****.**", ["*****@*****.**"])

			# Now find and update (or create) the session
			try:
				session = ClassroomSession.objects.get(classroom=classroom)
				session.ip = ip
				session.update_time = timezone.now()
				session.save()				
			except ClassroomSession.DoesNotExist:
				make_session(request, classroom)

			# And give them the 20
			prof = user.profile
			prof.upgraded = True
			prof.num_licenses += 20
			prof.save()

			analytics.track_event("post_teacher_start", request)

			code_model.user = user
			code_model.save()
			
			return HttpResponseRedirect("/session/status/")			
	else:
		form = EducentsCodeForm()
		return renderWithNav(request, "educents.html", {"form":form, "code":code})