diff --git a/mo/db.py b/mo/db.py
index a89d819a00ac27daa94c45fcf351d469c724efd7..97391edf7a0612837e9fe1f7b7c12c948c46c4e0 100644
--- a/mo/db.py
+++ b/mo/db.py
@@ -604,14 +604,21 @@ class Paper(Base):
     for_user_obj = relationship('User', primaryjoin='Paper.for_user == User.user_id')
     uploaded_by_obj = relationship('User', primaryjoin='Paper.uploaded_by == User.user_id')
 
-    def check_deadline(self, round: Round) -> Optional[str]:
+    def check_deadline(self, round: Round, contest: Contest) -> Optional[str]:
         # K round se dá dostat přes self.task.round, ale nejspíš to není nakešované.
         if self.uploaded_by == self.for_user:
             deadline = round.ct_submit_end
             suffix = ' účastnickém termínu'
         else:
+            gk = mo.rights.Gatekeeper(self.uploaded_by_obj)
+            rights = gk.rights_for_contest(contest)
+
+            if rights.have_right(mo.rights.Right.upload_submits):
+                return None
+
             deadline = round.pr_submit_end
             suffix = ' dozorovém termínu'
+
         if deadline is not None and self.uploaded_at > deadline:
             return timedelta(self.uploaded_at, deadline, descriptive=True) + suffix
         else:
diff --git a/mo/web/templates/org_contest_solutions.html b/mo/web/templates/org_contest_solutions.html
index 1772b747f66e422b95c846fee592465dfa061db0..99f0b5993dbdf9d65fcf035e2a258961c715d583 100644
--- a/mo/web/templates/org_contest_solutions.html
+++ b/mo/web/templates/org_contest_solutions.html
@@ -84,7 +84,7 @@ Odkazem v záhlaví se lze dostat na podrobný výpis odevzdání všech účast
 				{% set sol = tasks_sols[task.task_id][u.user_id] %}
 				{% if sol.final_submit_obj %}
 					{% set p = sol.final_submit_obj %}
-					{% set late = p.check_deadline(round) %}
+					{% set late = p.check_deadline(round, contest) %}
 					<td class="{% if late or p.broken %}danger{% else %}success{% endif %}">
 						<a href="{{ paper_link(u, p) }}" title="{{ p.uploaded_at|timeformat }}{% if p.is_broken() %} – nekorektní PDF{% endif %}{% if p.pages != None %} – {{ p.pages|inflected('stránka', 'stránky', 'stránek') }}{% endif %}{% if late %} – {{ late }}{% endif %}" class="pdf-icon">📄</a>
 						{% set key = (u.user_id, task.task_id, "solution") %}
diff --git a/mo/web/templates/org_submit_list.html b/mo/web/templates/org_submit_list.html
index 550a042f4449cbaa3332faef0382ccbe39b72181..0a01bc271c53327eca5f2c50fc109f83667d6afa 100644
--- a/mo/web/templates/org_submit_list.html
+++ b/mo/web/templates/org_submit_list.html
@@ -70,7 +70,7 @@ Existuje více než jedna verze řešení, finální je podbarvená.
 		{% set active_sol_id = None %}
 	{% endif %}
 	{% for p in sol_papers %}
-		{% set late = p.check_deadline(ctx.round) %}
+		{% set late = p.check_deadline(ctx.round, ctx.contest) %}
 		<tr{% if p.paper_id == active_sol_id %} class='warning'{% endif %}>
 			<td{% if late %} class='danger'{% endif %}>{{ p.uploaded_at|timeformat }}
 			<td>{% if p.is_broken() %}nekorektní PDF{% else %}{{ p.pages|or_dash }}{% endif %}
diff --git a/mo/web/templates/parts/org_solution_table.html b/mo/web/templates/parts/org_solution_table.html
index d1e8c5a0deea29bb8d5d5924e40e3b80b46fc5a5..fc4e8867a4cd72aeca91985af7feae841a6e0797 100644
--- a/mo/web/templates/parts/org_solution_table.html
+++ b/mo/web/templates/parts/org_solution_table.html
@@ -57,7 +57,7 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 		{% if sol %}
 		<td>{% if sol.final_submit_obj %}
 			{% set p = sol.final_submit_obj %}
-			{% set late = p.check_deadline(round) %}
+			{% set late = p.check_deadline(round, contest) %}
 			{% if late %}<span class='text-danger icon' title="{{ late }}">⚠</span>{% endif %}
 			<a href='{{ paper_link(u, p) }}'>
 				{{- p.uploaded_at|timeformat }}