Add problem solve functionality
This commit is contained in:
parent
c6b6766e6b
commit
aa208c4d15
3 changed files with 37 additions and 5 deletions
|
@ -1,8 +1,10 @@
|
|||
import logger
|
||||
|
||||
from flask import Blueprint, session, request
|
||||
from flask import current_app as app
|
||||
|
||||
from models import db, Problems
|
||||
from decorators import admins_only, api_wrapper
|
||||
from models import db, Problems, Solves, Teams
|
||||
from decorators import admins_only, api_wrapper, login_required
|
||||
|
||||
blueprint = Blueprint("problem", __name__)
|
||||
|
||||
|
@ -67,3 +69,33 @@ def problem_update():
|
|||
|
||||
return { "success": 1, "message": "Success!" }
|
||||
return { "success": 0, "message": "Problem does not exist!" }
|
||||
|
||||
@blueprint.route("/submit", methods=["POST"])
|
||||
@api_wrapper
|
||||
@login_required
|
||||
def problem_submit():
|
||||
pid = request.form["pid"]
|
||||
flag = request.form["flag"]
|
||||
tid = session["tid"]
|
||||
|
||||
problem = Problems.query.filter_by(pid=pid).first()
|
||||
team = Teams.query.filter_by(tid=tid).first()
|
||||
if problem:
|
||||
if flag == problem.flag:
|
||||
solve = Solves(pid, tid)
|
||||
team.score += problem.value
|
||||
problem.solves += 1
|
||||
db.session.add(solve)
|
||||
db.session.add(team)
|
||||
db.session.add(problem)
|
||||
db.session.commit()
|
||||
|
||||
logger.log("submissions.log", logger.WARNING, "%s has solved %s by submitting %s" % (team.name, problem.name, flag))
|
||||
return { "success": 1, "message": "Correct!" }
|
||||
|
||||
else:
|
||||
logger.log("submissions.log", logger.WARNING, "%s has incorrectly submitted %s to %s" % (team.name, flag, problem.name))
|
||||
return { "success": 0, "message": "Incorrect." }
|
||||
|
||||
else:
|
||||
return { "success": 0, "message": "Problem does not exist!" }
|
||||
|
|
|
@ -11,7 +11,7 @@ app.config["SQLALCHEMY_DATABASE_URI"] = config.SQLALCHEMY_DATABASE_URI
|
|||
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = config.SQLALCHEMY_TRACK_MODIFICATIONS
|
||||
|
||||
with app.app_context():
|
||||
from api.models import db
|
||||
from api.models import db, Teams, Problems, Solves, Users
|
||||
db.init_app(app)
|
||||
db.create_all()
|
||||
|
||||
|
|
|
@ -36,9 +36,9 @@
|
|||
|
||||
<div class="col-md-12">
|
||||
<br>
|
||||
<label>Password</label>
|
||||
<label>Confirm Password</label>
|
||||
<br>
|
||||
<input type="password" name="password_confirm" autocomplete="off" placeholder="Confirm Password" class="form-control">
|
||||
<input type="password" name="password_confirm" id="password_confirm" autocomplete="off" placeholder="Confirm Password" class="form-control">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
|
Loading…
Reference in a new issue