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'}})
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."})
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'}})
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'}})
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."})
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})