def register(): user = None registerForm = RegisterForm() if registerForm.validate_on_submit() and registerForm.submit.data: # TODO - uniqueness check, append numbers username = registerForm.first.data[0] + registerForm.last.data user = User(first=registerForm.first.data, last=registerForm.last.data, email=registerForm.email.data, phone_num=registerForm.phone_num.data, username=username, password=registerForm.password.data, is_admin=False) # create a new school object or nah? if True: school = School(name=registerForm.new_school.data) else: pass user.school = school db.session.add(user) db.session.add(school) db.session.commit() flash("succ cess", "success") return redirect('/login') return render_custom_template( "core/user/register.html", user=user, title="IML Scoring | Register", registerForm=registerForm, )
def create_client(): user = get_user(session["userdata"]["id"]) print(user.id) form = OAuth2ClientCreationForm() if form.validate_on_submit() and form.submit.data: client = OAuth2Client(client_name = form.client_name.data, client_uri = form.client_uri.data, scope = form.scope.data, redirect_uri = form.redirect_uri.data, grant_type = form.grant_type.data, response_type = form.response_type.data, token_endpoint_auth_method = form.token_endpoint_auth_method.data, user_id = user.id ) client.client_id = gen_salt(24) if client.token_endpoint_auth_method == 'none': client.client_secret = '' else: client.client_secret = gen_salt(48) db.session.add(client) db.session.commit() flash("Successfully created oauth client!") return redirect("oauth2/create_client") # create client form validation + processing return render_custom_template('oauth2/create_client.html', clientForm = form)
def login(): user = None loginForm = LoginForm() if loginForm.validate_on_submit() and loginForm.submit.data: user = User.query.filter_by( email=loginForm.email.data) \ .first() if user is not None: if user.checkPassword(loginForm.password.data): session["status"] = IS_LOGGED_IN session["userdata"] = { "id": user.id, "first": user.first, "last": user.last, "email": user.email, } if user.is_admin: session["status"] = IS_SITE_ADMIN session.permanent = True flash("Login Successful!", "success") dest_url = request.args.get('next') or '/' return redirect(dest_url) else: flash("Email and password do not match!", "error") else: flash("Your email is not in our system!", "error") return render_custom_template( "core/user/login.html", user=user, title="IML Scoring | Login", loginForm=loginForm, )
def add_contest(): contestForm = NewContestForm() divisions_query = Division.query.all() choices = [(div.name, div.name) for div in divisions_query] contestForm.division.choices = choices if contestForm.validate_on_submit() and contestForm.submit.data: division = Division.query.filter_by(name=contestForm.division.data).first() if division: question_count = contestForm.question_count.data contest = Contest(name=contestForm.name.data, start_time=contestForm.start_time.data, question_count=question_count) contest.division = division db.session.add(contest) db.session.commit() for question_num in range(1,question_count+1): newQuestion = Question(contest_id=contest.id, question_num=question_num, question_value=1, question_string=None) db.session.add(newQuestion) db.session.commit() # commit first to assign key flash("Contest successfully added!") else: flash("That division does not exist!") return render_custom_template("core/admin/add_contest.html", contestForm=contestForm)
def view_division(division_url): division = Division.query.filter_by(url=division_url).first() if not division: return redirect('/view') return render_custom_template("core/scores/view_division.html", division=division, students=division.getParticipants().order_by( Student.school_id))
def view_contest_scores(contest_id): contest = Contest.query.get(contest_id) if not contest: return redirect('/view') # TODO - come up wikth less redundant element gathering for template return render_custom_template("core/scores/view_contest.html", contest=contest, students=contest.getAttendees().order_by( Student.school_id))
def authorize(): user = get_user(session["userdata"]["id"]) form = OAuth2AuthForm() if request.method == 'POST' and form.submit: return authorization.create_authorization_response(grant_user=user) else: grant = authorization.validate_consent_request( end_user=user) return render_custom_template('oauth2/authorize.html', user=user, grant=grant, authForm=form)
def addStudents(): user = get_user(session["userdata"]["id"]) studentForm = NewStudentForm() school = user.school # list of divisions that a school participates in schools_divisions = school.getDivisionsList() school_teams_list = [] for team in school.teams: formatted_name = '{} ({})'.format(team.name, team.division.name) school_teams_list.append((team.id, formatted_name)) school_teams_list += [(-1*division.id, division.name + ' Alternate') for division in schools_divisions] studentForm.team.choices = school_teams_list if studentForm.validate_on_submit() and studentForm.submit.data: team_id = studentForm.team.data newStudentTeamId = None newStudentDivisionId = None if team_id < 0: newStudentDivisionId = team_id * -1 else: newStudentTeamId = team_id # TODO - make this query less team = Team.query.filter_by(id=team_id).first() print(team) newStudentDivisionId = team.division_id newStudent = Student(first=studentForm.first.data, last= studentForm.last.data, graduation_year=2023 ) newStudent.school = school newStudent.division_id = newStudentDivisionId newStudent.team_id = newStudentTeamId db.session.add(newStudent) db.session.commit() flash("Student successfully added!") return redirect("/students/manage") return render_custom_template("core/students/add_student.html", title="Add a student", studentForm = studentForm )
def update_scores(contest_id, team_id): user = get_user(session["userdata"]["id"]) school = user.school contest = Contest.query.filter_by(id=contest_id).first() team = Team.query.filter_by(id=team_id).first() if not (contest and user and team) or (team.school != school) or ( contest.division != team.division): flash( "Unspecified Error (Tell the admin to fix the application the application)" ) return redirect("/") studentsQuery = Student.query.filter_by(school_id=school.id, division_id=contest.division.id) students = [ student for student in studentsQuery if student.isValidParticipant(contest=contest, team=team) ] return render_custom_template("core/scores/update.html", user=user, contest=contest, students=students, team=team)
def index(): return render_custom_template('index.html', X=request.remote_addr)
def view_scores_homepage(): divisions = Division.query.all() return render_custom_template("core/scores/view_all.html", divisions=divisions)
def show_students(): user = get_user(session["userdata"]["id"]) students = user.school.students return render_custom_template("core/students/manage.html", students=students)
def list_contests(div_url): # TODO div_url check division = Division.query.filter_by(url=div_url).first() contests = Contest.query.filter_by(division_id=division.id) return render_custom_template("core/admin/contests.html", contests = contests)
def manage_divisions(): divisions = Division.query.all() return render_custom_template("core/admin/divisions.html", divisions = divisions)