From 44ccfa010e0c664e09a1c109ff33fe7ee1114b1b Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sun, 1 Dec 2024 11:25:40 +0100 Subject: [PATCH] =?UTF-8?q?Skript=20na=20export=20anonymizovan=C3=BDch=20?= =?UTF-8?q?=C3=BA=C4=8Dast=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/export-pion | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 bin/export-pion diff --git a/bin/export-pion b/bin/export-pion new file mode 100755 index 00000000..0947950c --- /dev/null +++ b/bin/export-pion @@ -0,0 +1,54 @@ +#!/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) -- GitLab