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