fix: show only relevant matches for a given year

This commit is contained in:
2025-06-13 00:31:19 +02:00
parent 00bbe05b1c
commit 56e68ed751
4 changed files with 27 additions and 10 deletions

View File

@@ -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())

View File

@@ -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

View File

@@ -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)

View File

@@ -36,7 +36,6 @@
<th></th>
</tr>
{% for match in matches %}
{% if match.data[:4] == selected_date %}
<tr>
<td>{{ match.data }}</td>
@@ -49,7 +48,6 @@
<td>{{ match.minutes }}</td>
-->
</tr>
{% endif %}
{% endfor %}
</table>
</section>