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