diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 610bb9126e4d76002cdadf14d12f8c96760f22ed..ee3b1b122cb3b3f3e1cbda17c7aaac8d9927bebd 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 a61d8ddfa45636e6284487830eba208a446782e0..7575342a8239f71361040666e6df85845c3f7ce1 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 %}