diff --git a/FlaskWebProject/FlaskWebProject/lewy_api_v1.py b/FlaskWebProject/FlaskWebProject/lewy_api_v1.py index 469e847..a4e0418 100644 --- a/FlaskWebProject/FlaskWebProject/lewy_api_v1.py +++ b/FlaskWebProject/FlaskWebProject/lewy_api_v1.py @@ -95,11 +95,12 @@ def stats(): return 200, "ok", data_to_send # GET /api/v1/matches -def get_matches(r = None, id_zawodnika: str | None = None): +def get_matches(r = None, id_zawodnika: str | None = None, rok: int | None = None): """ Zwraca mecze. Przykład wywołania: get_matches(r, id_zawodnika=1), tożsame z GET /api/v1/matches?id_zawodnika=1 + get_matches(r, rok=2024), tożsame z GET /api/v1/matches?rok=2024 get_matches(r), tożsame z GET /api/v1/matches """ response_json = [] @@ -109,9 +110,14 @@ def get_matches(r = None, id_zawodnika: str | None = None): # Gdy nie podano id wprost, sprawdź, czy podano je przez parametr. id_zawodnika = r.args.get('id_zawodnika', -1) + if rok is None: + # Gdy nie podano roku wprost, sprawdź, czy podano je przez parametr. + # Jeśli nie, przyjmij None (2025). + rok = r.args.get('rok', None) + # Sprawdź, czy podano jakiekolwiek ID sportowca. Jeżeli nie, wypisz wszystkie mecze. if id_zawodnika == -1: - mecze = getDb().simple_select_all("mecze") + mecze = getDb().get_sportsman_matches(year=rok) # Sprawdź, czy sportowiec o podanym (lub niepodanym) id istnieje. # Jeśli nie istnieje, wypisz wszystkie mecze. @@ -120,7 +126,7 @@ def get_matches(r = None, id_zawodnika: str | None = None): # Gdy sportowiec istnieje, wypisz jego mecze. else: - mecze = getDb().get_sportsman_matches(id_zawodnika=id_zawodnika) + mecze = getDb().get_sportsman_matches(id_zawodnika=id_zawodnika, year=rok) for mecz in mecze: response_json.append(mecz.jsonify()) diff --git a/FlaskWebProject/FlaskWebProject/lewy_db.py b/FlaskWebProject/FlaskWebProject/lewy_db.py index 3ac8347..7c04692 100644 --- a/FlaskWebProject/FlaskWebProject/lewy_db.py +++ b/FlaskWebProject/FlaskWebProject/lewy_db.py @@ -1,7 +1,7 @@ from datetime import datetime from flask_sqlalchemy import SQLAlchemy from functools import wraps -from sqlalchemy import ForeignKey, select, insert, update +from sqlalchemy import ForeignKey, select, insert, update, extract from sqlalchemy.orm import Mapped, mapped_column, DeclarativeBase, Session, relationship from typing import List import time @@ -517,8 +517,9 @@ class baza(): return query.all() @exit_gracefully - def get_sportsman_matches(self, id_zawodnika = None, zewnetrzne_id_zawodnika = None, order = "DESC"): + def get_sportsman_matches(self, id_zawodnika = None, zewnetrzne_id_zawodnika = None, order = "DESC", year = None): + # Spróbuj otrzymać id zawodnika z zewnętrznego id. if zewnetrzne_id_zawodnika is not None: id_zawodnika = self.get_id_zawodnika_by_zewnetrzne_id(zewnetrzne_id_zawodnika) @@ -531,17 +532,25 @@ class baza(): Mecze ).join( SportowcyWMeczach, Mecze.zewnetrzne_id_meczu == SportowcyWMeczach.zewnetrzne_id_meczu - ).join( + ) + + if id_zawodnika is not None: + query = query.join( Sportowcy, SportowcyWMeczach.id_zawodnika == Sportowcy.id_zawodnika ).filter( Sportowcy.id_zawodnika == id_zawodnika ) - # print(f"get_sportsman_matches: {query}") + if year is not None: + query = query.filter( + extract("year", Mecze.data) == year + ) if order.lower() == "desc": query = query.order_by(Mecze.data.desc()) + # print(f"get_sportsman_matches: {query}") + return query.all() @exit_gracefully diff --git a/FlaskWebProject/FlaskWebProject/lewy_routes.py b/FlaskWebProject/FlaskWebProject/lewy_routes.py index fd5bf1e..7634d2d 100644 --- a/FlaskWebProject/FlaskWebProject/lewy_routes.py +++ b/FlaskWebProject/FlaskWebProject/lewy_routes.py @@ -60,9 +60,13 @@ def index(): def mecze(): # Możesz dostarczyć szczegóły dotyczące meczów selected_date = request.args.get("date", '2025') + try: + selected_date = int(selected_date) + except: + selected_date = 2025 #with open("static/lewandowski_matches.json", "r") as file: # data = json.load(file) - status, msg, matches = get_matches(None, id_zawodnika=1) + status, msg, matches = get_matches(None, id_zawodnika=1, rok=selected_date) return render_template('matches.html', matches=matches, selected_date=selected_date) diff --git a/FlaskWebProject/FlaskWebProject/templates/matches.html b/FlaskWebProject/FlaskWebProject/templates/matches.html index 66f0429..dac41cf 100644 --- a/FlaskWebProject/FlaskWebProject/templates/matches.html +++ b/FlaskWebProject/FlaskWebProject/templates/matches.html @@ -36,7 +36,6 @@