diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 16ef2d338fc89547c3530291455844a63e649798..a44370a021146a4f53a52fdf44286ca469176775 100644 --- a/mo/web/org_contest.py +++ b/mo/web/org_contest.py @@ -472,13 +472,19 @@ def org_contest(ct_id: int, site_id: Optional[int] = None): task.sol_count = sol_counts[task.task_id] if task.task_id in sol_counts else 0 places_counts = None + active_count = None + total_count = None if not site_id: places_counts = ( sess.query(db.Place, func.count('*')) .select_from(db.Participation).join(db.Place) .group_by(db.Place) - .filter(db.Participation.contest == ctx.master_contest).all() + .filter(db.Participation.contest == ctx.master_contest) + .filter(db.Participation.state == db.PartState.active) + .all() ) + active_count = sum(pc[1] for pc in places_counts) + total_count = db.get_count(pions_subq) group_contests = contest.get_group_contests(True) group_contests.sort(key=lambda c: c.round.round_code()) @@ -491,6 +497,7 @@ def org_contest(ct_id: int, site_id: Optional[int] = None): rights_list=sorted(rights.rights, key=lambda r: r.name), roles=[r.friendly_name() for r in rights.get_roles()], tasks=tasks, places_counts=places_counts, + active_count=active_count, total_count=total_count, ) diff --git a/mo/web/templates/org_contest.html b/mo/web/templates/org_contest.html index d30e80ef5b7029cb1ec527b764fc0386dcd162cd..48e9c19798649efbcaa4a190c13caaf9ffce266e 100644 --- a/mo/web/templates/org_contest.html +++ b/mo/web/templates/org_contest.html @@ -135,7 +135,10 @@ <tfoot> <tr> <th>Celkem - <th>{{ places_counts|sum(attribute=1) }} + <th>{{ active_count }} + {% if total_count > active_count %} + + {{ total_count - active_count }} nesoutěží + {% endif %} <th> </tr> </tfoot>