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 &Sum;&nbsp;<i>b</i>&middot;(<i>max</i>&minus;<i>prum</i>),
+        kde <i>b</i> je bodový zisk z dané úlohy, <i>max</i> je maximum bodů dané úlohy a&nbsp;<i>prum</i> je průměrný bodový zisk z&nbsp;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