mirror of
https://github.com/iritmaximus/timetrials.git
synced 2026-10-12 19:13:48 +03:00
feat: added times to project
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
<h1>Add time</h1>
|
||||||
|
|
||||||
|
<form action="/create/time" method="POST">
|
||||||
|
<label for="game">Game:</label>
|
||||||
|
<input type="text" name="game">
|
||||||
|
<label for="course">Course:</label>
|
||||||
|
<input type="text" name="course">
|
||||||
|
<label for="time">Time (mm:ss:mss):</label>
|
||||||
|
<input type="text" name="time">
|
||||||
|
<input type="submit" name="time">
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<h1>Times</h1>
|
||||||
|
|
||||||
|
<a href="/create/time">Add new time</a>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
table, tr, td {
|
||||||
|
border: 1px solid black;
|
||||||
|
border-collapse: collapse;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table style="border:1px solid black">
|
||||||
|
{% if times_exist %}
|
||||||
|
<tr>
|
||||||
|
<td>Course</td>
|
||||||
|
<td>Game</td>
|
||||||
|
<td>Time</td>
|
||||||
|
<td>User</td>
|
||||||
|
</tr>
|
||||||
|
{% for item in times %}
|
||||||
|
<td>{{item[0]}}</td>
|
||||||
|
<td>{{item[1]}}</td>
|
||||||
|
<td>{{item[2]}}</td>
|
||||||
|
<td>{{item[3]}}</td>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
from flaskr.database import db
|
||||||
|
|
||||||
|
|
||||||
|
def query_times():
|
||||||
|
sql = "SELECT games.name, courses.name, times.timems, users.username FROM times JOIN games ON games.id=times.game_id JOIN courses ON courses.id=times.course_id JOIN users ON users.id=times.user_id"
|
||||||
|
result = db.session.execute(sql).fetchall()
|
||||||
|
print(result)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def add_time(game, course, time, user):
|
||||||
|
sql = "SELECT id FROM games WHERE games.name=:game"
|
||||||
|
game_id = db.session.execute(sql, {"game": game}).fetchone()
|
||||||
|
if game_id is None:
|
||||||
|
raise ValueError("No game_id found for", game)
|
||||||
|
sql = "SELECT id FROM courses WHERE courses.name=:course"
|
||||||
|
course_id = db.session.execute(sql, {"course": course}).fetchone()
|
||||||
|
if course_id is None:
|
||||||
|
raise ValueError("No course_id found for", course)
|
||||||
|
sql = "SELECT id FROM users WHERE users.username=:user"
|
||||||
|
user_id = db.session.execute(sql, {"user": user}).fetchone()
|
||||||
|
if user_id is None:
|
||||||
|
raise ValueError("No user_id found for", user)
|
||||||
|
sql = "INSERT INTO times (game_id, course_id, timems, user_id) VALUES (:game_id, :course_id, :time, :user_id)"
|
||||||
|
|
||||||
|
print(game_id, course_id, time, user_id)
|
||||||
|
print(sql)
|
||||||
|
|
||||||
|
db.session.execute(
|
||||||
|
sql,
|
||||||
|
{
|
||||||
|
"game_id": game_id[0],
|
||||||
|
"course_id": course_id[0],
|
||||||
|
"time": time,
|
||||||
|
"user_id": user_id[0],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
db.session.commit()
|
||||||
+30
-3
@@ -8,6 +8,7 @@ from flaskr.user import (
|
|||||||
check_session,
|
check_session,
|
||||||
create_new_user,
|
create_new_user,
|
||||||
)
|
)
|
||||||
|
from flaskr.times import query_times, add_time
|
||||||
|
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
@@ -20,19 +21,45 @@ def navigate():
|
|||||||
# TODO show 3 games with most times submitted
|
# TODO show 3 games with most times submitted
|
||||||
@app.route("/games")
|
@app.route("/games")
|
||||||
def get_games():
|
def get_games():
|
||||||
return "List of games"
|
return render_template("games.html")
|
||||||
|
|
||||||
|
|
||||||
# TODO show 3 courses with most activity
|
# TODO show 3 courses with most activity
|
||||||
@app.route("/courses")
|
@app.route("/courses")
|
||||||
def get_courses():
|
def get_courses():
|
||||||
return "List of courses"
|
return render_template("courses.html")
|
||||||
|
|
||||||
|
|
||||||
# TODO show 3 newest times submitted
|
# TODO show 3 newest times submitted
|
||||||
@app.route("/times")
|
@app.route("/times")
|
||||||
def get_times():
|
def get_times():
|
||||||
return "List of times"
|
times = query_times()
|
||||||
|
print(times)
|
||||||
|
if times is not None:
|
||||||
|
return render_template("times.html", times=times, times_exist=True)
|
||||||
|
return render_template("times.html", times_exist=False)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/create/time", methods=["GET", "POST"])
|
||||||
|
def create_time():
|
||||||
|
if request.method == "GET":
|
||||||
|
return render_template("addtime.html")
|
||||||
|
elif request.method == "POST":
|
||||||
|
if session.get("name") is None:
|
||||||
|
return redirect(url_for("login"))
|
||||||
|
game = request.form["game"]
|
||||||
|
course = request.form["course"]
|
||||||
|
time = request.form["time"]
|
||||||
|
user = session["name"]
|
||||||
|
add_time(game, course, time, user)
|
||||||
|
return redirect(url_for("get_times"))
|
||||||
|
else:
|
||||||
|
return "Error: Incorrect method"
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/cups")
|
||||||
|
def get_cups():
|
||||||
|
return render_template("cups.html")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/login", methods=["GET", "POST"])
|
@app.route("/login", methods=["GET", "POST"])
|
||||||
|
|||||||
@@ -35,5 +35,6 @@ CREATE TABLE IF NOT EXISTS times (
|
|||||||
game_id int references games(id),
|
game_id int references games(id),
|
||||||
course_id int references courses(id),
|
course_id int references courses(id),
|
||||||
timems varchar(80),
|
timems varchar(80),
|
||||||
|
user_id int references users(id),
|
||||||
date date
|
date date
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user