From 1a0425468405a3fa38ae3e25bd0b685912afdd76 Mon Sep 17 00:00:00 2001 From: iritmaximus Date: Sat, 4 Mar 2023 13:33:37 +0200 Subject: [PATCH] fix: from the courses view it is now possible to click on game and be redirected to that games page. --- flaskr/templates/courses.html | 6 +++--- flaskr/utils/games.py | 9 +++++++++ flaskr/views/games.py | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/flaskr/templates/courses.html b/flaskr/templates/courses.html index e87e969..337fb91 100644 --- a/flaskr/templates/courses.html +++ b/flaskr/templates/courses.html @@ -17,9 +17,9 @@ table, tr, td { {% for item in courses %} - {{item[0]}} - {{item[1]}} - {{item[2]}} + {{item[0]}} + {{item[1]}} + {{item[2]}} {% endfor %} {% endif %} diff --git a/flaskr/utils/games.py b/flaskr/utils/games.py index 72f01bb..d0ffeff 100644 --- a/flaskr/utils/games.py +++ b/flaskr/utils/games.py @@ -7,6 +7,15 @@ def query_games(): return result +def query_game_by_name(game_name: str): + sql = "SELECT id FROM games WHERE games.name=:game_name" + result = db.session.execute(sql, {"game_name": game_name}).fetchone() + if result: + return result[0] + else: + raise ValueError(f"No game with name {game_name} found") + + def get_game_name(id: int): sql = f"SELECT name FROM games WHERE id=:id" result = db.session.execute(sql, {"id": id}).fetchone() diff --git a/flaskr/views/games.py b/flaskr/views/games.py index 70549b9..90ef89b 100644 --- a/flaskr/views/games.py +++ b/flaskr/views/games.py @@ -1,6 +1,11 @@ -from flask import render_template +from flask import render_template, redirect from flaskr import app -from flaskr.utils.games import query_games, get_game_name, get_all_times_in_game +from flaskr.utils.games import ( + query_games, + get_game_name, + get_all_times_in_game, + query_game_by_name, +) @app.route("/games") @@ -22,3 +27,13 @@ def get_game_by_id(game_id): ) times = get_all_times_in_game(game_id) return render_template("game_id.html", game_name=game_name, times=times) + + +@app.route("/api/game/") +def get_game_by_name(game_name: str): + try: + game_name = str(game_name).replace("%20", " ") + game_id = query_game_by_name(game_name) + return redirect(f"/games/{game_id}") + except ValueError as e: + return render_template("error.html", message=f"Error fetching game name, {e}")