mirror of
https://github.com/iritmaximus/timetrials.git
synced 2026-10-12 19:13:48 +03:00
fix: courses can be clicked :)
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
<h1>{{course_name}}</h1>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
table, tr, td {
|
||||||
|
border: 1px solid black;
|
||||||
|
border-collapse: collapse;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<h2>Times</h2>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>Game</td>
|
||||||
|
<td>Cup</td>
|
||||||
|
<td>Time</td>
|
||||||
|
<td>User</td>
|
||||||
|
</tr>
|
||||||
|
{% for time in times %}
|
||||||
|
<tr>
|
||||||
|
<td>{{time[0]}}</td>
|
||||||
|
<td>{{time[1]}}</td>
|
||||||
|
<td>{{time[2]}}</td>
|
||||||
|
<td>{{time[3]}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<a href="/games">Go back</a>
|
||||||
@@ -17,7 +17,7 @@ table, tr, td {
|
|||||||
</tr>
|
</tr>
|
||||||
{% for item in courses %}
|
{% for item in courses %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="/courses/{{item[0].replace(' ', '%20')}}">{{item[0]}}</a></td>
|
<td><a href="/api/course/{{item[0].replace(' ', '%20')}}">{{item[0]}}</a></td>
|
||||||
<td><a href="/api/game/{{item[1].replace(' ', '%20')}}">{{item[1]}}</a></td>
|
<td><a href="/api/game/{{item[1].replace(' ', '%20')}}">{{item[1]}}</a></td>
|
||||||
<td><a href="/api/cup/{{item[2].replace(' ', '%20')}}">{{item[2]}}</a></td>
|
<td><a href="/api/cup/{{item[2].replace(' ', '%20')}}">{{item[2]}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -5,3 +5,16 @@ def query_courses():
|
|||||||
sql = "SELECT courses.name, games.name, cups.name FROM courses JOIN games ON games.id=courses.game_id JOIN cups ON cups.id=courses.cup_id"
|
sql = "SELECT courses.name, games.name, cups.name FROM courses JOIN games ON games.id=courses.game_id JOIN cups ON cups.id=courses.cup_id"
|
||||||
result = db.session.execute(sql).fetchall()
|
result = db.session.execute(sql).fetchall()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def query_course_by_name(course_name: str):
|
||||||
|
sql = """
|
||||||
|
SELECT games.name, cups.name, times.timems, users.username
|
||||||
|
FROM times
|
||||||
|
JOIN games ON games.id=times.game_id
|
||||||
|
JOIN cups ON cups.id=times.cup_id
|
||||||
|
JOIN users ON users.id=times.user_id
|
||||||
|
WHERE times.course_id in (SELECT id FROM courses WHERE name=:course_name)
|
||||||
|
"""
|
||||||
|
result = db.session.execute(sql, {"course_name": course_name}).fetchall()
|
||||||
|
return result
|
||||||
|
|||||||
+11
-1
@@ -1,7 +1,7 @@
|
|||||||
from flask import render_template
|
from flask import render_template
|
||||||
|
|
||||||
from flaskr import app
|
from flaskr import app
|
||||||
from flaskr.utils.courses import query_courses
|
from flaskr.utils.courses import query_courses, query_course_by_name
|
||||||
|
|
||||||
|
|
||||||
@app.route("/courses")
|
@app.route("/courses")
|
||||||
@@ -18,3 +18,13 @@ def get_course_by_id(course_id: int):
|
|||||||
course_id = int(course_id)
|
course_id = int(course_id)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return render_template("error.html", message=f"Incorrect id, {e}")
|
return render_template("error.html", message=f"Incorrect id, {e}")
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/api/course/<string:course_name>")
|
||||||
|
def get_course_by_name(course_name: str):
|
||||||
|
try:
|
||||||
|
course_name = str(course_name).replace("%20", " ")
|
||||||
|
times = query_course_by_name(course_name)
|
||||||
|
return render_template("course_name.html", course_name=course_name, times=times)
|
||||||
|
except ValueError as e:
|
||||||
|
return render_template("error.html", message=f"Failed to fetch course, {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user