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.