From 7b97ac14cb90b3b6dafbbfe48aa5184699726655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz> Date: Fri, 19 Feb 2021 19:58:07 +0100 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=C3=AD=20allow=5Fcreate=5Fsolut?= =?UTF-8?q?ions=20do=20SolutionContext=20a=20drobn=C3=BD=20refaktoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/web/org_contest.py | 11 +++++++---- mo/web/templates/org_contest_solutions.html | 4 ++-- mo/web/templates/org_contest_task.html | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index e3de4f55..956626ce 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 670a5472..dc718bae 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 224fd89e..ec03f0d4 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 %} -- GitLab