diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index e3de4f555b02a7873fe5b0f0baa66c2459c49f11..956626ce63f5b703f3c86e580da500478f9d5516 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -353,6 +353,7 @@ def org_contest(id: int, site_id: Optional[int] = None):
can_manage=rr.have_right(Right.manage_contest),
can_upload=rr.can_upload_feedback(round),
can_edit_points=rr.can_edit_points(round),
+ can_create_solutions=rr.can_upload_feedback(round) or rr.can_upload_solutions(round),
can_view_statement=rr.can_view_statement(round),
tasks=tasks, places_counts=places_counts,
)
@@ -556,6 +557,7 @@ class SolutionContext:
allow_view: bool
allow_upload_solutions: bool
allow_upload_feedback: bool
+ allow_create_solutions: bool
allow_edit_points: bool
@@ -608,6 +610,8 @@ def get_solution_context(contest_id: int, user_id: Optional[int], task_id: Optio
if not allow_view:
raise werkzeug.exceptions.Forbidden()
+ allow_upload_solutions = rr.can_upload_solutions(round)
+ allow_upload_feedback = rr.can_upload_feedback(round)
return SolutionContext(
contest=contest,
round=round,
@@ -617,8 +621,9 @@ def get_solution_context(contest_id: int, user_id: Optional[int], task_id: Optio
site=site,
# XXX: Potřebujeme tohle všechno? Nechceme spíš vracet rr a nechat každého, ať na něm volá metody?
allow_view=allow_view,
- allow_upload_solutions=rr.can_upload_solutions(round),
- allow_upload_feedback=rr.can_upload_feedback(round),
+ allow_upload_solutions=allow_upload_solutions,
+ allow_upload_feedback=allow_upload_feedback,
+ allow_create_solutions=allow_upload_solutions or allow_upload_feedback,
allow_edit_points=rr.can_edit_points(round),
)
@@ -1024,8 +1029,6 @@ def org_contest_solutions(id: int, site_id: Optional[int] = None):
'org_contest_solutions.html',
contest=sc.contest, site=sc.site, sc=sc,
pions=pions, tasks=tasks, tasks_sols=task_sols, paper_counts=paper_counts,
- can_upload=sc.allow_upload_feedback,
- can_edit_points=sc.allow_edit_points,
paper_link=lambda u, p: mo.web.util.org_paper_link(sc.contest, sc.site, u, p),
)
diff --git a/mo/web/templates/org_contest_solutions.html b/mo/web/templates/org_contest_solutions.html
index 670a5472bd17e63d0190d69496123423fbff6614..dc718baef49b73b11b85b738b467e44d3b68b1e7 100644
--- a/mo/web/templates/org_contest_solutions.html
+++ b/mo/web/templates/org_contest_solutions.html
@@ -36,7 +36,7 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
<th rowspan=2>Stav účasti</th>
{% for task in tasks %}<th colspan=4>
<a href="{{ url_for('org_contest_task', contest_id=contest.contest_id, site_id=site_id, task_id=task.task_id) }}">{{ task.code }}</a>
- {% if can_edit_points %}
+ {% if sc.allow_edit_points %}
<a title="Editovat body" href="{{ url_for('org_contest_task_points', contest_id=contest.contest_id, task_id=task.task_id) }}" class="icon pull-right">✎</a>
{% endif %}
{% endfor %}
@@ -100,7 +100,7 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
{% for task in tasks %}
<td colspan=4><div class='btn-group'>
<a class='btn btn-xs btn-primary' href="{{ url_for('org_contest_task_download', contest_id=contest.contest_id, site_id=site_id, task_id=task.task_id) }}">Stáhnout</a>
- {% if can_upload %}
+ {% if sc.allow_upload_feedback %}
<a class='btn btn-xs btn-primary' href="{{ url_for('org_contest_task_upload', contest_id=contest.contest_id, site_id=site_id, task_id=task.task_id) }}">Nahrát</a>
{% endif %}
</div>
diff --git a/mo/web/templates/org_contest_task.html b/mo/web/templates/org_contest_task.html
index 224fd89eb4395db03ab1635dbcb9e16c11ec0ced..ec03f0d41d6f0dad54bc088430567647fcaf5ec1 100644
--- a/mo/web/templates/org_contest_task.html
+++ b/mo/web/templates/org_contest_task.html
@@ -39,7 +39,7 @@
{% else %}
<div class='btn-group'>
<a class='btn btn-primary' href="{{ url_for('org_contest_task_download', contest_id=ct_id, site_id=site_id, task_id=task.task_id) }}">Stáhnout řešení</a>
- {% if can_upload %}
+ {% if sc.allow_upload_feedback %}
<a class='btn btn-primary' href="{{ url_for('org_contest_task_upload', contest_id=ct_id, site_id=site_id, task_id=task.task_id) }}">Nahrát opravená řešení</a>
{% endif %}
{% if not site and sc.allow_edit_points %}