From c4141639b9feb02778e7cf4a8f7cfc12bee1c5b4 Mon Sep 17 00:00:00 2001 From: Ari Anisfeld Date: Tue, 26 Dec 2023 13:28:34 -0600 Subject: [PATCH] Add route to launch session on student computers with bit.ly link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Describe Your Changes - Add route '/games/sessions' that matches available bit.ly link (bit.ly/blueredgame) - Adjust template to accept session id from instructor - Use js to manage redirects including older one; previously we used the standard form with query strings. ## Non-Obvious Technical Information ## Checklist Before Requesting a Review - [x] The code runs successfully. ```commandline 2023-12-26 12:58:24 INFO: Application startup complete. 2023-12-26 12:58:31 INFO: 172.25.0.1:40658 - "GET /games/sessions HTTP/1.1" 200 OK 2023-12-26 12:59:36 INFO: 172.25.0.1:53164 - "GET /games/session/4/ HTTP/1.1" 307 Temporary Redirect 2023-12-26 12:59:36 INFO: 172.25.0.1:53164 - "GET /games/session/4 HTTP/1.1" 200 OK 2023-12-26 12:59:38 INFO: 172.25.0.1:53164 - "GET /games/10/player/59/ready HTTP/1.1" 200 OK ``` --- prijateli_tree/app/routers/games.py | 16 +++-- prijateli_tree/app/templates/new_session.html | 66 ++++++++++++++++--- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/prijateli_tree/app/routers/games.py b/prijateli_tree/app/routers/games.py index da376c0a..77f63d19 100644 --- a/prijateli_tree/app/routers/games.py +++ b/prijateli_tree/app/routers/games.py @@ -58,10 +58,18 @@ ############################### +@router.get("/sessions", response_class=HTMLResponse) +def choose_session_id(request: Request) -> Response: + return templates.TemplateResponse( + "new_session.html", + context={"request": request, "session_id": -1}, + ) + + @router.get("/session/{session_id}", response_class=HTMLResponse) -def route_session_access( +def choose_session_players( request: Request, session_id: int, db: Session = Depends(get_db) -): +) -> Response: games = db.query(Game).filter_by(game_session_id=session_id).all() raise_exception_if_not(games, "session not found or games not created") @@ -80,13 +88,13 @@ def route_session_access( ) -@router.get("/{game_id}/ready", response_class=HTMLResponse) +@router.get("/{game_id}/player/{player_id}/ready", response_class=HTMLResponse) def start_session( request: Request, game_id: int, player_id: int, db: Session = Depends(get_db), -): +) -> Response: _, player = get_game_and_player(game_id, player_id, db) template_text = languages[player.language.abbr] diff --git a/prijateli_tree/app/templates/new_session.html b/prijateli_tree/app/templates/new_session.html index 75f3ff10..04d18c94 100644 --- a/prijateli_tree/app/templates/new_session.html +++ b/prijateli_tree/app/templates/new_session.html @@ -1,19 +1,65 @@ {% extends "base.html" %} +{% block helper_script %} + +{% endblock helper_script %} {% block title %} PrijateliTree - Access Session {% endblock title %} {% block content %}

Welcome.

-

Select the name of the student who will sit at this desk.

-
-
- - - -
-
+ {% if session_id == -1 %} +

Enter the session id.

+
+
+ +
+
+ +
+
+ {% else %} +

Select the name of the student who will sit at this desk.

+
+
+ + +
+
+ + +
+
+ {% endif %}
{% endblock content %}