From 07d3b23c893fb84587e7dfc494011ea13e7547cf Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Mon, 11 Jan 2021 01:32:41 +0100
Subject: [PATCH] =?UTF-8?q?Odkaz=20na=20sta=C5=BEen=C3=AD=20v=C5=A1ech=20?=
 =?UTF-8?q?=C5=99e=C5=A1en=C3=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Zatím jenom u celkové tabulky bodů.
---
 mo/web/org_contest.py                       | 11 +++++++++--
 mo/web/templates/org_contest_solutions.html |  5 ++++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 610bb912..ee3b1b12 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -16,6 +16,7 @@ import mo
 import mo.csv
 import mo.db as db
 import mo.imports
+import mo.jobs.submit
 import mo.rights
 from mo.rights import Right, Rights
 import mo.util
@@ -426,8 +427,8 @@ def make_contestant_table(query: Query, add_checkbox: bool = False, add_contest_
     )
 
 
-@app.route('/org/contest/c/<int:id>/reseni')
-@app.route('/org/contest/c/<int:id>/site/<int:site_id>/reseni')
+@app.route('/org/contest/c/<int:id>/reseni', methods=('GET', 'POST'))
+@app.route('/org/contest/c/<int:id>/site/<int:site_id>/reseni', methods=('GET', 'POST'))
 def org_contest_solutions(id: int, site_id: Optional[int] = None):
     contest, site, rr = get_contest_site_rr(id, site_id, Right.manage_contest)
 
@@ -456,6 +457,12 @@ def org_contest_solutions(id: int, site_id: Optional[int] = None):
         joinedload(db.Solution.final_feedback_obj)
     ).all()
 
+    if request.method == 'POST' and 'download' in request.form:
+        paper_ids = [sol.final_submit for sol in sols if sol.final_submit is not None]
+        mo.jobs.submit.schedule_download_submits(paper_ids, 'Odevzdaná řešení', g.user)
+        flash('Příprava řešení ke stažení zahájena.', 'success')
+        return redirect(url_for('org_jobs'))
+
     task_sols: Dict[int, Dict[int, db.Solution]] = {}
     for t in tasks:
         task_sols[t.task_id] = {}
diff --git a/mo/web/templates/org_contest_solutions.html b/mo/web/templates/org_contest_solutions.html
index a61d8ddf..7575342a 100644
--- a/mo/web/templates/org_contest_solutions.html
+++ b/mo/web/templates/org_contest_solutions.html
@@ -49,7 +49,6 @@ konkrétní úlohu.</p>
 				{% else %}–{% endif %}
 				<td class="sol">
 			{% else %}<td colspan=3>–<td>{% endif %}
-
 					<a class="btn btn-xs btn-link" title="Detail řešení" href="{{ url_for('org_submit_list', contest_id=contest.contest_id, user_id=u.user_id, task_id=task.task_id, site_id=site_id) }}">🔍</a>
 		{% endfor %}
 		<th>{{ sum_points|sum }}</th>
@@ -57,4 +56,8 @@ konkrétní úlohu.</p>
 	{% endfor %}
 </table>
 
+<form method=POST action="">
+	<button type=submit name=download value=go>Stáhnout všechna řešení jako ZIP</button>
+</form>
+
 {% endblock %}
-- 
GitLab