From 7c5953aece1c45bf41d57bb85b45ca73ae0bdebc Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Tue, 9 Feb 2021 12:47:17 +0100
Subject: [PATCH] =?UTF-8?q?Skript=20na=20export=20seznamu=20organiz=C3=A1t?=
 =?UTF-8?q?or=C5=AF=20a=20jejich=20rol=C3=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/export-orgs | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100755 bin/export-orgs

diff --git a/bin/export-orgs b/bin/export-orgs
new file mode 100755
index 00000000..2c5f1511
--- /dev/null
+++ b/bin/export-orgs
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+# Přehled všech organizátorských účtů
+
+from dataclasses import dataclass
+from sqlalchemy.orm import joinedload
+import sys
+
+import mo.csv
+import mo.db as db
+
+sess = db.get_session()
+
+orgs = (sess.query(db.User)
+        .filter_by(is_org=True)
+        .options(joinedload(db.User.roles).joinedload(db.UserRole.place))
+        .all())
+
+
+@dataclass
+class Row:
+    jmeno: str
+    email: str
+    last_login: str
+    role: str = ""
+    kod_souteze: str = ""
+    kod_mista: str = ""
+    misto: str = ""
+
+
+output = []
+for user in sorted(orgs, key=lambda u: u.sort_key()):
+    o = Row(
+        jmeno=user.full_name(),
+        email=user.email,
+        last_login=(user.last_login_at.strftime('%Y-%m-%d') if user.last_login_at is not None else '-'),
+    )
+
+    if user.roles:
+        for r in user.roles:
+            o.role = r.role
+            o.kod_souteze = f"{r.category or '*'}-{r.year or '*'}-{r.seq or '*'}"
+            p = r.place
+            o.kod_mista = p.get_code()
+            o.misto = p.type_name() + " " + p.name
+            output.append(o)
+    else:
+        o.role = '-'
+        output.append(o)
+
+mo.csv.write(sys.stdout, mo.csv.FileFormat.en_csv, Row, output)
-- 
GitLab