Skip to content
Snippets Groups Projects
Select Git revision
  • 44ccfa010e0c664e09a1c109ff33fe7ee1114b1b
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

export-pion

Blame
  • export-pion 1.74 KiB
    #!/usr/bin/env python3
    # Účast ve všech soutěžích ročníku (anonymně)
    
    from dataclasses import dataclass
    from sqlalchemy.orm import joinedload
    import sys
    
    import mo.csv
    import mo.db as db
    
    sess = db.get_session()
    
    res = (sess.query(db.Participant, db.Participation)
           .select_from(db.Participant)
           .join(db.Participation, db.Participation.user_id == db.Participant.user_id)
           .options(joinedload(db.Participant.user))
           .options(joinedload(db.Participant.school_place).joinedload(db.Place.parent_place).joinedload(db.Place.parent_place).joinedload(db.Place.parent_place))
           .options(joinedload(db.Participation.place))
           .options(joinedload(db.Participation.contest).joinedload(db.Contest.place))
           .options(joinedload(db.Participation.contest).joinedload(db.Contest.round))
           .all())
    
    
    @dataclass
    class Row:
        rocnik: str = ""
        kategorie: str = ""
        kolo: str = ""
        misto: str = ""
        kod_mista: str = ""
        kod_ucastnika: str = ""
        nazev_skoly: str = ""
        kod_skoly: str = ""
        kraj_skoly: str = ""
    
    
    output = []
    for pant, pion in res:
        if pion.contest.round.is_subround():
            continue
        output.append(Row(
            rocnik=str(pion.contest.round.year),
            kategorie=pion.contest.round.category,
            kolo=str(pion.contest.round.level),
            misto=pion.contest.place.name,
            kod_mista=str(pion.contest.place.place_id),
            kod_ucastnika=str(pion.user_id),
            nazev_skoly=pant.school_place.name,
            kod_skoly=str(pant.school),
            kraj_skoly=pant.school_place.parent_place.parent_place.parent_place.name,
        ))
    
    output.sort(key=lambda o: (o.rocnik, o.kategorie, o.kolo, o.kod_mista, o.kod_ucastnika))
    mo.csv.write(sys.stdout, mo.csv.FileFormat.en_csv, Row, output)