Skip to content
Snippets Groups Projects
Select Git revision
  • 57b3564753503923d5b3e1af19b38c575fa57873
  • master default protected
2 results

task.md

Blame
  • export-orgs 1.17 KiB
    #!/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)