From cdbcc39b1bd93077db9a1b0459379047c21bee39 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Mon, 24 Jul 2023 19:04:38 +0200
Subject: [PATCH] =?UTF-8?q?Export=20mailov=C3=BDch=20adres=20organiz=C3=A1?=
 =?UTF-8?q?tor=C5=AF=20pro=20KSP=C3=A1ckou=20mailovac=C3=AD=20ma=C5=A1iner?=
 =?UTF-8?q?ii?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/export-ksp-post | 58 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100755 bin/export-ksp-post

diff --git a/bin/export-ksp-post b/bin/export-ksp-post
new file mode 100755
index 00000000..79ca869d
--- /dev/null
+++ b/bin/export-ksp-post
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+# Exportování kontaktů na organizátory ve formátu pro KSPácký post-mail-gen
+
+import argparse
+from dataclasses import dataclass
+from sqlalchemy import or_
+from sqlalchemy.orm import joinedload
+import sys
+
+import mo.csv
+import mo.db as db
+from mo.util import die, init_standalone
+
+parser = argparse.ArgumentParser(description='Exportuje kontakty pro post-mail-gen z KSP')
+parser.add_argument('--role', type=str, metavar='ROLE', nargs='*', help='organizátoři s jednou ze zadaných rolí (formát jako v DB)')
+parser.add_argument('--cat', type=str, metavar='CAT', nargs='*', help='omezit role na jednu z daných kategorií')
+
+args = parser.parse_args()
+
+init_standalone()
+sess = db.get_session()
+
+query = (sess.query(db.User)
+         .filter_by(is_org=True))
+
+if args.role:
+    roles = [db.RoleType.coerce(x) for x in args.role]
+    subq = sess.query(db.UserRole.user_id).filter(db.UserRole.role.in_(roles))
+    if args.cat:
+        subq = subq.filter(or_(db.UserRole.category.in_(args.cat), db.UserRole.category == None))
+    query = query.filter(db.User.user_id.in_(subq))
+
+orgs = query.all()
+
+
+@dataclass
+class Row:
+    uid: str
+    src: str
+    email: str
+    first_name: str
+    last_name: str
+    papers: str
+
+
+output = []
+for u in sorted(orgs, key=lambda u: u.sort_key()):
+    row = Row(
+        uid=u.user_id,
+        src='osmo',
+        email=u.email,
+        first_name=u.first_name,
+        last_name=u.last_name,
+        papers='mail',
+    )
+    output.append(row)
+
+mo.csv.write(sys.stdout, mo.csv.FileFormat.tsv, Row, output)
-- 
GitLab