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

Export: Statistiky pro kategorie Zn

parent 13db23d7
Branches
No related tags found
No related merge requests found
......@@ -143,22 +143,26 @@ def org_export_z_stats(year: int, seq: int):
regions = (sess.query(db.Place)
.filter_by(level=1)
.order_by(db.Place.code)
.all())
rounds = (sess.query(db.Round)
.filter(db.Round.category.like('Z%'))
.filter_by(year=year, seq=seq)
.order_by(db.Round.category)
.all())
print(rounds)
table = {}
data = {}
for rnd in rounds:
# FIXME: Check rights
if not g.gatekeeper.rights_for_round(rnd).have_right(Right.view_contestants):
continue
for successful in [False, True]:
min_pts = rnd.points_step
if successful and rnd.score_successful_limit is not None:
min_pts = rnd.score_successful_limit
reg = aliased(db.Place)
print('=========', rnd.round_code())
pions = (sess.query(reg.place_id, reg.code, func.count(db.Participation.user_id))
stats = (sess.query(reg, func.count(db.Participation.user_id))
.select_from(db.Participation)
.join(db.Contest, db.Contest.contest_id == db.Participation.contest_id)
.filter(db.Contest.round == rnd)
......@@ -171,9 +175,30 @@ def org_export_z_stats(year: int, seq: int):
.filter(db.Solution.user_id == db.Participation.user_id)
.join(db.Task, db.Task.round == rnd)
.filter(db.Solution.task_id == db.Task.task_id)
.scalar_subquery() > 0)
.scalar_subquery() >= min_pts)
.group_by(reg.place_id)
.all())
print(pions)
for reg, cnt in stats:
data[rnd, reg, successful] = cnt
columns = [Column(key='kraj', name='kraj')]
for rnd in rounds:
columns.append(Column(key=f'total-{rnd.category}', name=f'{rnd.category}-celkem'))
columns.append(Column(key=f'succ-{rnd.category}', name=f'{rnd.category}-úspěšní'))
rows = []
for reg in regions:
keys = {'kraj': reg.name}
for rnd in rounds:
keys[f'total-{rnd.category}'] = data.get((rnd, reg, False), 0)
keys[f'succ-{rnd.category}'] = data.get((rnd, reg, True), 0)
rows.append(Row(keys=keys))
table = Table(
id="z-stats",
columns=columns,
rows=rows,
filename=f'stats-z-{year}-{seq}',
)
return ""
return table.send_as(format)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment