Skip to content
Snippets Groups Projects
Commit 7349e365 authored by Martin Mareš's avatar Martin Mareš
Browse files

Download opravených řešení + sjednocení kódu

parent d7f8b376
No related branches found
No related tags found
No related merge requests found
......@@ -190,6 +190,7 @@ class ParticipantsActionForm(FlaskForm):
class DownloadButtonForm(FlaskForm):
download = wtforms.SubmitField('Stáhnout všechna řešení jako ZIP')
download_feedback = wtforms.SubmitField('Stáhnout opravená jako ZIP')
def get_contest(id: int) -> db.Contest:
......@@ -691,6 +692,23 @@ def get_solutions_query(
return query
def download_solutions(form: DownloadButtonForm, solutions: List[db.Solution], subject: str) -> bool:
if not form.validate_on_submit():
return False
if form.download.data:
paper_ids = [sol.final_submit for sol in solutions if sol.final_submit is not None]
mo.jobs.submit.schedule_download_submits(paper_ids, f'Odevzdaná řešení {subject}', g.user)
flash('Příprava odevzdaných řešení ke stažení zahájena.', 'success')
return True
if form.download_feedback.data:
paper_ids = [sol.final_feedback or sol.final_submit for sol in solutions if sol.final_submit is not None]
mo.jobs.submit.schedule_download_submits(paper_ids, f'Opravená řešení {subject}', g.user)
flash('Příprava opravených řešení ke stažení zahájena.', 'success')
return True
@app.route('/org/contest/c/<int:contest_id>/task/<int:task_id>/', methods=('GET', 'POST'))
@app.route('/org/contest/c/<int:contest_id>/site/<int:site_id>/task/<int:task_id>/', methods=('GET', 'POST'))
def org_contest_task_submits(contest_id: int, task_id: int, site_id: Optional[int] = None):
......@@ -702,11 +720,7 @@ def org_contest_task_submits(contest_id: int, task_id: int, site_id: Optional[in
rows.sort(key=lambda r: r[0].user.sort_key())
download_form = DownloadButtonForm()
if request.method == 'POST' and download_form.validate_on_submit():
if download_form.download.data:
paper_ids = [sol.final_submit for pion, sol in rows if sol is not None and sol.final_submit is not None]
mo.jobs.submit.schedule_download_submits(paper_ids, f'Odevzdaná řešení úlohy {sc.task.code}', g.user)
flash('Příprava řešení ke stažení zahájena.', 'success')
if request.method == 'POST' and download_solutions(download_form, [sol for pion, sol in rows if sol is not None], f'úlohy {sc.task.code}'):
return redirect(url_for('org_jobs'))
# Count papers for each solution
......@@ -833,11 +847,7 @@ def org_contest_solutions(id: int, site_id: Optional[int] = None):
paper_counts[(user_id, task_id, type.name)] = count
download_form = DownloadButtonForm()
if request.method == 'POST' and download_form.validate_on_submit():
if download_form.download.data:
paper_ids = [sol.final_submit for sol in sols if sol is not None and 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')
if request.method == 'POST' and download_solutions(download_form, [sol for sol in sols if sol is not None], sc.round.round_code()):
return redirect(url_for('org_jobs'))
task_sols: Dict[int, Dict[int, db.Solution]] = {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment