From 4b9fa480ba330645bd5f42f674dbb9bb05e1f379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pracha=C5=99?= <jan.prachar@gmail.com> Date: Mon, 25 Apr 2022 11:55:28 +0200 Subject: [PATCH] =?UTF-8?q?FO=20v=C3=BDsledkovka:=20Popis=20ur=C4=8Dov?= =?UTF-8?q?=C3=A1n=C3=AD=20po=C5=99ad=C3=AD=20&=20zm=C4=9Bna=20u=20ne?= =?UTF-8?q?=C3=BAsp=C4=9B=C5=A1n=C3=BDch=20=C5=99e=C5=A1itel=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/score.py | 8 ++------ mo/web/org_score.py | 1 + mo/web/templates/org_score.html | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/mo/score.py b/mo/score.py index 510095a8..513e8037 100644 --- a/mo/score.py +++ b/mo/score.py @@ -486,12 +486,8 @@ class Score: # 1. Podle úspěšných řešitelů, 2. Podle bodů result._order_key.extend((not result.successful, -total_points)) - if result.successful or not self.want_successful: - # 3. Podle modifikovaných bodů - result._order_key.append(-modif_points) - else: - # Neúspěšné řešitele třídíme sekundárně podle jména a user_id - result._order_key.extend((result.user.name_sort_key(), result.user.user_id)) + # 3. Podle modifikovaných bodů + result._order_key.append(-modif_points) # Na konec třídícího klíče přidáme ročník (menší ročník první) for result in self._results.values(): diff --git a/mo/web/org_score.py b/mo/web/org_score.py index be705c73..cd07526d 100644 --- a/mo/web/org_score.py +++ b/mo/web/org_score.py @@ -281,6 +281,7 @@ def org_score(round_id: Optional[int] = None, hier_id: Optional[int] = None, ct_ can_view_submits=ctx.rights.can_view_submits(), public=public, edit_form=edit_form, + RoundScoreMode=db.RoundScoreMode, ) else: return table.send_as(format) diff --git a/mo/web/templates/org_score.html b/mo/web/templates/org_score.html index 5b17c68d..b2dbb885 100644 --- a/mo/web/templates/org_score.html +++ b/mo/web/templates/org_score.html @@ -64,9 +64,22 @@ Výsledky {{ round.name|round_genitive|lower }}{% if public %} {{ round.year }}. {% elif type == "warning" %}<p class="text-warning">{{ msg }}</p> {% else %}<p>{{ msg | safe }}{% endif %}</p> {% endfor %} +{% endif %} -<p class="text-muted">Mód této výsledkové listiny je <i>{{ master.score_mode.friendly_name() }}</i>. -Diskvalifikovaní, odmítnuvší a nepřítomní účastníci jsou skryti, stejně tak testovací uživatelé. +<p class="text-muted"> +{% if master.score_mode == RoundScoreMode.fo %} +Ve výsledném pořadí jsou nejprve uvedeni úspěšní řešitelé seřazeni podle počtu bodů a teprve za nimi jsou další účastníci. Při shodném počtu bodů o pořadí rozhoduje: +<ol class="text-muted"> + <li>Vyšší počet „modifikovaných bodů“, které se vypočítají dle vzorce ∑ <i>b</i>·(<i>max</i>−<i>prum</i>), + kde <i>b</i> je bodový zisk z dané úlohy, <i>max</i> je maximum bodů dané úlohy a <i>prum</i> je průměrný bodový zisk z dané úlohy v daném kraji. +Znamená to, že v modifikovaných bodech má větší váhu zisk bodů z obtížnějších úloh.</li> + <li>Ročník studia soutěžícího, příp. datum narození. Mladší mají přednost.</li> + <li>Pokud nerozhodne ani jedno z předchozích kritérií, rozhoduje los.</li> +</ol> +{% else %} +Mód této výsledkové listiny je <i>{{ master.score_mode.friendly_name() }}</i>. +{% endif %} +<p class="text-muted">Diskvalifikovaní, odmítnuvší a nepřítomní účastníci jsou skryti, stejně tak testovací uživatelé. </p> {% if group_rounds|length > 1 %} @@ -75,6 +88,7 @@ Diskvalifikovaní, odmítnuvší a nepřítomní účastníci jsou skryti, stejn Jsou v ní započítány body ze všech úloh těchto kol.</p> {% endif %} +{% if not public %} <p> {% if contest and contest.state == RoundState.closed or round.state == RoundState.closed %} <a class="btn btn-default" target="_blank" href="{{ ctx.url_for('public_score') }}">Veřejná výsledková listina</a> -- GitLab