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

Web umí posílat i originální rozbitý submit

parent f4e3a6ec
No related branches found
No related tags found
1 merge request!53Změna reprezentace rozbitých submitů
This commit is part of merge request !53. Comments created here will be created in the context of that merge request.
...@@ -892,8 +892,10 @@ class SubmitEditForm(FlaskForm): ...@@ -892,8 +892,10 @@ class SubmitEditForm(FlaskForm):
submit = wtforms.SubmitField("Uložit") submit = wtforms.SubmitField("Uložit")
@app.route('/org/contest/c/<int:contest_id>/paper/<int:paper_id>/<filename>') @app.route('/org/contest/c/<int:contest_id>/paper/<int:paper_id>/<filename>', endpoint='org_submit_paper')
@app.route('/org/contest/c/<int:contest_id>/site/<int:site_id>/paper/<int:paper_id>/<filename>') @app.route('/org/contest/c/<int:contest_id>/site/<int:site_id>/paper/<int:paper_id>/<filename>', endpoint='org_submit_paper')
@app.route('/org/contest/c/<int:contest_id>/paper/orig/<int:paper_id>/<filename>', endpoint='org_submit_paper_orig')
@app.route('/org/contest/c/<int:contest_id>/site/<int:site_id>/paper/orig/<int:paper_id>/<filename>', endpoint='org_submit_paper_orig')
def org_submit_paper(contest_id: int, paper_id: int, filename: str, site_id: Optional[int] = None): def org_submit_paper(contest_id: int, paper_id: int, filename: str, site_id: Optional[int] = None):
paper = (db.get_session().query(db.Paper) paper = (db.get_session().query(db.Paper)
.options(joinedload(db.Paper.task)) # pro task_paper_filename() .options(joinedload(db.Paper.task)) # pro task_paper_filename()
...@@ -906,7 +908,7 @@ def org_submit_paper(contest_id: int, paper_id: int, filename: str, site_id: Opt ...@@ -906,7 +908,7 @@ def org_submit_paper(contest_id: int, paper_id: int, filename: str, site_id: Opt
get_solution_context(contest_id, paper.for_user, paper.for_task, site_id) get_solution_context(contest_id, paper.for_user, paper.for_task, site_id)
return mo.web.util.send_task_paper(paper) return mo.web.util.send_task_paper(paper, (request.endpoint == 'org_submit_paper_orig'))
def get_solutions_query( def get_solutions_query(
......
...@@ -72,20 +72,28 @@ def _task_paper_filename(user: db.User, paper: db.Paper) -> str: ...@@ -72,20 +72,28 @@ def _task_paper_filename(user: db.User, paper: db.Paper) -> str:
def org_paper_link(contest_or_id: Union[db.Contest, int], def org_paper_link(contest_or_id: Union[db.Contest, int],
site: Optional[db.Place], site: Optional[db.Place],
user: db.User, user: db.User,
paper: db.Paper) -> str: paper: db.Paper,
orig: bool = False) -> str:
"""Doporučujeme preloadovat paper.task.""" """Doporučujeme preloadovat paper.task."""
if isinstance(contest_or_id, db.Contest): if isinstance(contest_or_id, db.Contest):
contest_or_id = contest_or_id.contest_id contest_or_id = contest_or_id.contest_id
return url_for('org_submit_paper', return url_for('org_submit_paper' if not orig else 'org_submit_paper_orig',
contest_id=contest_or_id, contest_id=contest_or_id,
paper_id=paper.paper_id, paper_id=paper.paper_id,
site_id=site.place_id if site else None, site_id=site.place_id if site else None,
filename=_task_paper_filename(user, paper)) filename=_task_paper_filename(user, paper))
def send_task_paper(paper: db.Paper) -> Response: def send_task_paper(paper: db.Paper, orig: bool = False) -> Response:
file = os.path.join(mo.util.data_dir('submits'), paper.file_name) if orig:
name = paper.orig_file_name
else:
name = paper.file_name or paper.orig_file_name
if not name:
logger.error(f'Paper #{paper.paper_id} nemá žádný soubor')
raise werkzeug.exceptions.NotFound()
file = os.path.join(mo.util.data_dir('submits'), name)
if os.path.isfile(file): if os.path.isfile(file):
return send_file(file, mimetype='application/pdf') return send_file(file, mimetype='application/pdf')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment