Skip to content
Snippets Groups Projects
Commit 0d425d10 authored by Jiří Setnička's avatar Jiří Setnička
Browse files

Dávkové operace (import, download, upload) upraveny pro dělená kola

Issue #178
parent 6c876690
Branches
No related tags found
1 merge request!48Dělená kola napotřetí
......@@ -51,7 +51,7 @@ def handle_download_submits(the_job: TheJob):
.join(db.User, db.User.user_id == db.Paper.for_user)
.join(db.Task, db.Task.task_id == db.Paper.for_task)
.join(db.Participation, db.Participation.user_id == db.Paper.for_user)
.join(db.Contest, and_(db.Contest.contest_id == db.Participation.contest_id, db.Contest.round_id == db.Task.round_id))
.join(db.Contest, and_(db.Contest.master_contest_id == db.Participation.contest_id, db.Contest.round_id == db.Task.round_id))
.join(db.Place, db.Place.place_id == db.Contest.place_id)
.all())
papers.sort(key=lambda p: (p[1].sort_key(), p[2]))
......@@ -216,7 +216,7 @@ def handle_upload_feedback(the_job: TheJob):
rows = (sess.query(db.User, db.Participation, db.Contest)
.select_from(db.Participation)
.join(db.User, db.User.user_id == db.Participation.user_id)
.join(db.Contest, db.Contest.contest_id == db.Participation.contest_id)
.join(db.Contest, db.Contest.master_contest_id == db.Participation.contest_id)
.filter(db.Contest.round == round)
.filter(db.Participation.user_id.in_(user_dict.keys()))
.all())
......
......
......@@ -370,7 +370,7 @@ def org_contest(id: int, site_id: Optional[int] = None):
)
def generic_import(round: db.Round, contest: Optional[db.Contest]):
def generic_import(round: db.Round, master_round: db.Round, contest: Optional[db.Contest], master_contest: Optional[db.Contest]):
"""Společná funkce pro importování do soutěží a kol"""
form = ImportForm()
......@@ -378,7 +378,7 @@ def generic_import(round: db.Round, contest: Optional[db.Contest]):
warnings = []
if form.validate_on_submit():
fmt = form.fmt.data
imp = create_import(user=g.user, type=form.typ.data, fmt=fmt, round=round, contest=contest)
imp = create_import(user=g.user, type=form.typ.data, fmt=fmt, round=master_round, contest=master_contest)
if form.submit.data:
if form.file.data is not None:
file = form.file.data.stream
......@@ -423,7 +423,10 @@ def doc_import():
@app.route('/org/contest/c/<int:id>/import', methods=('GET', 'POST'))
def org_contest_import(id: int):
contest, master_contest, rr = get_contest_rr(id, Right.manage_contest)
return generic_import(contest.round, contest)
return generic_import(
round=contest.round, master_round=master_contest.round,
contest=contest, master_contest=master_contest
)
@app.route('/org/contest/c/<int:id>/ucastnici', methods=('GET', 'POST'))
......@@ -1188,11 +1191,11 @@ def generic_batch_download(round: db.Round, contest: Optional[db.Contest], site:
pion_query = sess.query(db.Participation.user_id).select_from(db.Participation)
if contest is not None:
pion_query = pion_query.filter_by(contest=contest)
pion_query = pion_query.filter_by(contest_id=contest.master_contest_id)
if site is not None:
pion_query = pion_query.filter_by(place=site)
else:
pion_query = pion_query.join(db.Contest).filter(db.Contest.round == round)
pion_query = pion_query.join(db.Contest).filter(db.Contest.round_id == round.master_round_id)
sol_query = (sess.query(db.Solution)
.select_from(db.Solution)
......
......
......@@ -363,7 +363,7 @@ def org_round_list(id: int):
@app.route('/org/contest/r/<int:id>/import', methods=('GET', 'POST'))
def org_round_import(id: int):
round, master_round, rr = get_round_rr(id, Right.manage_contest, True)
return generic_import(round, None)
return generic_import(round, master_round, None, None)
class MODateTimeField(wtforms.DateTimeField):
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment