예제 #1
0
def submission_download(contest, problem, timestamp, filename):
    time = datetime.fromtimestamp(timestamp)
    user = get_current_user(contest)
    contest = Contest(contest)
    problem = contest.problem(problem)
    submission = Submission(contest, problem, user, time)
    if not submission.exists or filename not in submission.files.values():
        return abort(404)
    return send_file(os.path.join(submission.path, filename))
예제 #2
0
def files(contest_name, name, path=None):
    contest = Contest.contest(contest_name)
    problem = contest.problem(name)
    user = get_current_user(contest_name)
    if user is None:
        return redirect("user.login")
    if problem is None or contest is None:
        return abort(404)
    if path is None:
        return send_file(problem.files_zip)
    return send_file(os.path.join(problem.path, "public", path))
예제 #3
0
def contest_view(contest_name):
    contest = Contest.contest(contest_name)

    user = get_current_user(contest_name)
    if user is None:
        return redirect(url_for("main.login", contest_name=contest_name))

    if contest is None:
        return abort(404)

    return render_template("contest.html", contest=contest, user=user)
예제 #4
0
def submission_view(contest, problem, timestamp):
    time = datetime.fromtimestamp(timestamp)
    user = get_current_user(contest)
    contest = Contest(contest)
    problem = contest.problem(problem)
    submission = Submission(contest, problem, user, time)
    if not submission.exists:
        return abort(404)

    return render_template('submission.html',
                           goals=submission.problem.goals,
                           user=user,
                           submission=submission,
                           contest=contest)
예제 #5
0
def problem_view(contest_name, name):
    contest = Contest.contest(contest_name)

    if contest is None:
        return abort(404)

    current_user = get_current_user(contest_name)
    if current_user is None:
        return redirect("user.login")

    problem = contest.problem(name)
    if problem is None:
        return abort(404)

    subs = list(
        Submission.from_user_and_problem_and_contest(current_user, problem,
                                                     contest))

    return render_template("problem.html",
                           problem=problem,
                           contest=contest,
                           user=current_user,
                           submissions=subs)
예제 #6
0
파일: api.py 프로젝트: SimoGira/turingarena
def require_auth(contest):
    user = get_current_user(contest)
    if user is None:
        raise ApiError(401, "authentication required")
    return user