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

mo.util: die a parsování kódů kol

Kódy kol možná patří do mo.db, ale mám pocit, že se z toho už stává
ošklivé skladiště.
parent 51f44f41
Branches
No related tags found
No related merge requests found
# Různé
from dataclasses import dataclass
import datetime
import email.message
import email.headerregistry
import re
from sqlalchemy.orm import joinedload
import subprocess
from typing import Any, Optional
import sys
from typing import Any, Optional, Noreturn
import textwrap
import mo.db as db
......@@ -64,3 +65,30 @@ def send_password_reset_email(user: db.User, link: str):
if sm.returncode != 0:
raise RuntimeError('Sendmail failed with return code {}'.format(sm.returncode))
def die(msg: str) -> Noreturn:
print(msg, file=sys.stderr)
sys.exit(1)
@dataclass
class RoundCode:
year: int
cat: str
seq: int
def __str__(self):
return f'{self.year}-{self.cat}-{self.seq}'
@staticmethod
def parse(code: str) -> Optional['RoundCode']:
m = re.match(r'(\d+)-([A-Z0-9]+)-(\d+)', code)
if m:
return RoundCode(year=int(m[1]), cat=m[2], seq=int(m[3]))
else:
return None
def get_round_by_code(code: RoundCode) -> Optional[db.Round]:
return db.get_session().query(db.Round).filter_by(year=code.year, category=code.cat, seq=code.seq).one_or_none()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment