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

Skript na export anonymizovaných účastí

parent e50ff6e2
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
# Účast ve všech soutěžích ročníku (anonymně)
from dataclasses import dataclass
from sqlalchemy.orm import joinedload
import sys
import mo.csv
import mo.db as db
sess = db.get_session()
res = (sess.query(db.Participant, db.Participation)
.select_from(db.Participant)
.join(db.Participation, db.Participation.user_id == db.Participant.user_id)
.options(joinedload(db.Participant.user))
.options(joinedload(db.Participant.school_place).joinedload(db.Place.parent_place).joinedload(db.Place.parent_place).joinedload(db.Place.parent_place))
.options(joinedload(db.Participation.place))
.options(joinedload(db.Participation.contest).joinedload(db.Contest.place))
.options(joinedload(db.Participation.contest).joinedload(db.Contest.round))
.all())
@dataclass
class Row:
rocnik: str = ""
kategorie: str = ""
kolo: str = ""
misto: str = ""
kod_mista: str = ""
kod_ucastnika: str = ""
nazev_skoly: str = ""
kod_skoly: str = ""
kraj_skoly: str = ""
output = []
for pant, pion in res:
if pion.contest.round.is_subround():
continue
output.append(Row(
rocnik=str(pion.contest.round.year),
kategorie=pion.contest.round.category,
kolo=str(pion.contest.round.level),
misto=pion.contest.place.name,
kod_mista=str(pion.contest.place.place_id),
kod_ucastnika=str(pion.user_id),
nazev_skoly=pant.school_place.name,
kod_skoly=str(pant.school),
kraj_skoly=pant.school_place.parent_place.parent_place.parent_place.name,
))
output.sort(key=lambda o: (o.rocnik, o.kategorie, o.kolo, o.kod_mista, o.kod_ucastnika))
mo.csv.write(sys.stdout, mo.csv.FileFormat.en_csv, Row, output)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment