From cf9dbac3999528d94e2b61cc461e73f03edead19 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Thu, 23 Sep 2021 22:13:04 +0200
Subject: [PATCH] =?UTF-8?q?Rozd=C4=9Blena=20pr=C3=A1va=20k=20v=C3=BDsledko?=
 =?UTF-8?q?vce=20na=20view=5Fcontestants=20a=20view=5Fsubmits?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/web/org_score.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/mo/web/org_score.py b/mo/web/org_score.py
index 331f9ddf..2fb1585d 100644
--- a/mo/web/org_score.py
+++ b/mo/web/org_score.py
@@ -43,11 +43,13 @@ class SolPointsCell(Cell):
     contest_id: int
     user: db.User
     sol: Optional[db.Solution]
+    link_to_paper: bool
 
-    def __init__(self, contest_id: int, user: db.User, sol: Optional[db.Solution]):
+    def __init__(self, contest_id: int, user: db.User, sol: Optional[db.Solution], link_to_paper: bool):
         self.contest_id = contest_id
         self.user = user
         self.sol = sol
+        self.link_to_paper = link_to_paper
 
     def __str__(self) -> str:
         if not self.sol:
@@ -64,7 +66,9 @@ class SolPointsCell(Cell):
         else:
             points = format_decimal(self.sol.points)
 
-        if self.sol.final_feedback_obj:
+        if not self.link_to_paper:
+            return f'<td>{points}'
+        elif self.sol.final_feedback_obj:
             url = mo.web.util.org_paper_link(self.contest_id, None, self.user, self.sol.final_feedback_obj)
             return f'<td><a href="{url}" title="Zobrazit finální opravu">{points}</a>'
         elif self.sol.final_submit_obj:
@@ -84,9 +88,9 @@ def org_score(round_id: Optional[int] = None, ct_id: Optional[int] = None):
 
     sess = db.get_session()
 
-    # FIXME
-    if not ctx.rights.have_right(Right.view_submits):
+    if not ctx.rights.have_right(Right.view_contestants):
         raise werkzeug.exceptions.Forbidden()
+    can_view_submits = ctx.rights.have_right(Right.view_submits)
 
     score = Score(round.master, contest)
     tasks = score.get_tasks()
@@ -175,7 +179,8 @@ def org_score(round_id: Optional[int] = None, ct_id: Optional[int] = None):
         for task in tasks:
             local_sol_ct_id = subcontest_id_map[(task.round_id, pion.contest_id)]
             row.keys[f'task_{task.task_id}'] = SolPointsCell(
-                contest_id=local_sol_ct_id, user=user, sol=sols.get(task.task_id)
+                contest_id=local_sol_ct_id, user=user, sol=sols.get(task.task_id),
+                link_to_paper=can_view_submits
             )
         if result.winner:
             row.html_attr = {"class": "winner", "title": "Vítěz"}
-- 
GitLab