diff --git a/mo/rights.py b/mo/rights.py
index 29553db03b62c9409ca58aeba7be6db0bc36d827..d990340e48afa92d50799b1ef35bb5769a83fa1c 100644
--- a/mo/rights.py
+++ b/mo/rights.py
@@ -281,6 +281,24 @@ class ContestRights(Rights):
     def can_view_statement(self) -> bool:
         return self._check_view_statement(self.contest.round)
 
+    def cannot_view_statement_reason(self) -> str:
+        round = self.contest.round
+        if round.tasks_file is None:
+            return "zatím chybí"
+        if self.have_right(Right.manage_round):
+            # Správce kola může vždy všechno
+            return ""
+        if self.have_right(Right.view_statement):
+            if round.state == db.RoundState.preparing:
+                return "až začne soutěž"
+            if round.state == db.RoundState.running and round.pr_tasks_start is None:
+                return "až začnou opravy"
+            if mo.now < round.pr_tasks_start:
+                return mo.util_format.timedelta(round.pr_tasks_start)
+        if round.state not in [db.RoundState.grading, db.RoundState.closed]:
+            return "až začnou opravy"
+        return ""
+
 
 class Gatekeeper:
     """Dveřník rozhoduje, jaká práva má uživatel k danému objektu.