Skip to content
Snippets Groups Projects
Commit cdbcc39b authored by Martin Mareš's avatar Martin Mareš
Browse files

Export mailových adres organizátorů pro KSPáckou mailovací mašinerii

parent c2177d55
No related branches found
No related tags found
No related merge requests found
#!/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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment