Skip to content
Snippets Groups Projects
Commit a3af5b3e authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

Db: find_round

parent a3558a99
No related branches found
No related tags found
1 merge request!97Import orgů
......@@ -9,7 +9,7 @@ import re
from sqlalchemy import \
Boolean, Column, DateTime, ForeignKey, Integer, String, Text, UniqueConstraint, \
text, func, \
create_engine, inspect, select
create_engine, inspect, select, or_, and_
from sqlalchemy.engine import Engine
from sqlalchemy.orm import relationship, sessionmaker, Session, class_mapper, joinedload, aliased
from sqlalchemy.orm.attributes import get_history
......@@ -318,6 +318,29 @@ class Round(Base):
return " ".join(times)
def find_round(year: Optional[int], category: Optional[str], code: str) -> Round:
if not year:
raise mo.CheckError('Neuveden ročník pro nalezení kola')
if not category:
raise mo.CheckError('Neuvedena kategorie pro nalezení kola')
try:
seq: Optional[int] = int(code)
except ValueError:
seq = None
r = (
get_session().query(Round)
.filter_by(year=year, category=category)
.filter(or_(Round.code == code, and_(Round.code == "", Round.seq == seq if seq else False)))
.all()
)
if len(r) < 1:
raise mo.CheckError(f'Kolo {year}-{category}-{seq} nenalezeno')
if len(r) > 1:
raise mo.CheckError(f'Kolo {year}-{category}-{seq} nelze určit jednoznačně')
return r[0]
class User(Base):
__tablename__ = 'users'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment