コード例 #1
0
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,
    )
コード例 #2
0
ファイル: controllers.py プロジェクト: alexlu876/iml-scoring
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)
コード例 #3
0
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,
    )
コード例 #4
0
ファイル: controllers.py プロジェクト: alexlu876/iml-scoring
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)
コード例 #5
0
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))
コード例 #6
0
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))
コード例 #7
0
ファイル: controllers.py プロジェクト: alexlu876/iml-scoring
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)
コード例 #8
0
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
                           )
コード例 #9
0
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)
コード例 #10
0
def index():
    return render_custom_template('index.html', X=request.remote_addr)
コード例 #11
0
def view_scores_homepage():
    divisions = Division.query.all()
    return render_custom_template("core/scores/view_all.html",
                                  divisions=divisions)
コード例 #12
0
def show_students():
    user = get_user(session["userdata"]["id"])
    students = user.school.students
    return render_custom_template("core/students/manage.html",
                                  students=students)
コード例 #13
0
ファイル: controllers.py プロジェクト: alexlu876/iml-scoring
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)
コード例 #14
0
ファイル: controllers.py プロジェクト: alexlu876/iml-scoring
def manage_divisions():
    divisions = Division.query.all()
    return render_custom_template("core/admin/divisions.html",
                                  divisions = divisions)