Skip to content
Snippets Groups Projects
Commit f69d4b61 authored by Martin Mareš's avatar Martin Mareš
Browse files

Vylepšení db.find_round

  •  Zjednodušeno díky povinným kódům kol.

  •  Funguje pro dělená kola a vždy vrací hlavní kolo;
     proto jsem funkci přejmenoval na find_master_round.
parent 8e5de49b
No related branches found
No related tags found
1 merge request!97Import orgů
...@@ -318,26 +318,22 @@ class Round(Base): ...@@ -318,26 +318,22 @@ class Round(Base):
return " ".join(times) return " ".join(times)
def find_round(year: Optional[int], category: Optional[str], code: str) -> Round: def find_master_round(year: Optional[int], category: Optional[str], code: str) -> Round:
if not year: if not year:
raise mo.CheckError('Neuveden ročník pro nalezení kola') raise mo.CheckError('Neuveden ročník pro nalezení kola')
if not category: if not category:
raise mo.CheckError('Neuvedena kategorie pro nalezení kola') raise mo.CheckError('Neuvedena kategorie pro nalezení kola')
try:
seq: Optional[int] = int(code)
except ValueError:
seq = None
r = ( r = (
get_session().query(Round) get_session().query(Round)
.filter_by(year=year, category=category) .filter_by(year=year, category=category, code=code)
.filter(or_(Round.code == code, and_(Round.code == "", Round.seq == seq if seq else False))) .filter(Round.master_round_id == Round.round_id)
.all() .all()
) )
if len(r) < 1: if len(r) < 1:
raise mo.CheckError(f'Kolo {year}-{category}-{seq} nenalezeno') raise mo.CheckError(f'Kolo {year}-{category}-{code} nenalezeno')
if len(r) > 1: if len(r) > 1:
raise mo.CheckError(f'Kolo {year}-{category}-{seq} nelze určit jednoznačně') raise mo.CheckError(f'Kolo {year}-{category}-{code} nelze určit jednoznačně')
return r[0] return r[0]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment