mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-15 01:05:42 +00:00
Fix file path management and download bugs
This commit is contained in:
parent
9dde839148
commit
4c92fdfb6c
@ -234,7 +234,7 @@ def download_corpus_file(corpus_id, corpus_file_id):
|
||||
or current_user.is_administrator()):
|
||||
abort(403)
|
||||
return send_from_directory(as_attachment=True,
|
||||
directory=corpus_file.corpus.path,
|
||||
directory=os.path.dirname(corpus_file.path),
|
||||
filename=corpus_file.filename)
|
||||
|
||||
|
||||
@ -382,8 +382,7 @@ def inspect_query_result(query_result_id):
|
||||
inspect_display_options_form = InspectDisplayOptionsForm(
|
||||
prefix='inspect-display-options-form'
|
||||
)
|
||||
query_result_file_path = os.path.join(query_result.path, query_result.filename) # noqa
|
||||
with open(query_result_file_path, 'r') as query_result_file:
|
||||
with open(query_result.path, 'r') as query_result_file:
|
||||
query_result_file_content = json.load(query_result_file)
|
||||
return render_template('corpora/query_results/inspect.html.j2',
|
||||
query_result=query_result,
|
||||
@ -413,5 +412,6 @@ def download_query_result(query_result_id):
|
||||
if not (query_result.creator == current_user
|
||||
or current_user.is_administrator()):
|
||||
abort(403)
|
||||
return send_from_directory(as_attachment=True, directory=query_result.path,
|
||||
return send_from_directory(as_attachment=True,
|
||||
directory=os.path.dirname(query_result.path),
|
||||
filename=query_result.filename)
|
||||
|
@ -5,6 +5,7 @@ from . import jobs
|
||||
from . import tasks
|
||||
from ..decorators import admin_required
|
||||
from ..models import Job, JobInput, JobResult
|
||||
import os
|
||||
|
||||
|
||||
@jobs.route('/<int:job_id>')
|
||||
@ -32,14 +33,12 @@ def delete_job(job_id):
|
||||
@jobs.route('/<int:job_id>/inputs/<int:job_input_id>/download')
|
||||
@login_required
|
||||
def download_job_input(job_id, job_input_id):
|
||||
job_input = JobInput.query.get_or_404(job_input_id)
|
||||
if not job_input.job_id == job_id:
|
||||
abort(404)
|
||||
job_input = JobInput.query.filter(JobInput.job_id == job_id, JobInput.id == job_input_id).first_or_404() # noqa
|
||||
if not (job_input.job.creator == current_user
|
||||
or current_user.is_administrator()):
|
||||
abort(403)
|
||||
return send_from_directory(as_attachment=True,
|
||||
directory=job_input.job.path,
|
||||
directory=os.path.dirname(job_input.path),
|
||||
filename=job_input.filename)
|
||||
|
||||
|
||||
@ -59,12 +58,10 @@ def restart(job_id):
|
||||
@jobs.route('/<int:job_id>/results/<int:job_result_id>/download')
|
||||
@login_required
|
||||
def download_job_result(job_id, job_result_id):
|
||||
job_result = JobResult.query.get_or_404(job_result_id)
|
||||
if not job_result.job_id == job_id:
|
||||
abort(404)
|
||||
job_result = JobResult.query.filter(JobResult.job_id == job_id, JobResult.id == job_result_id).first_or_404() # noqa
|
||||
if not (job_result.job.creator == current_user
|
||||
or current_user.is_administrator()):
|
||||
abort(403)
|
||||
return send_from_directory(as_attachment=True,
|
||||
directory=job_result.job.path,
|
||||
directory=os.path.dirname(job_result.path),
|
||||
filename=job_result.filename)
|
||||
|
@ -311,7 +311,7 @@ class JobResult(db.Model):
|
||||
|
||||
@property
|
||||
def path(self):
|
||||
return os.path.join(self.job.path, self.filename)
|
||||
return os.path.join(self.job.path, 'output', self.filename)
|
||||
|
||||
def __repr__(self):
|
||||
'''
|
||||
@ -561,7 +561,8 @@ class QueryResult(db.Model):
|
||||
|
||||
@property
|
||||
def path(self):
|
||||
return os.path.join(self.creator.path, 'query_results', str(self.id))
|
||||
return os.path.join(
|
||||
self.creator.path, 'query_results', str(self.id), self.filename)
|
||||
|
||||
def delete(self):
|
||||
shutil.rmtree(self.path, ignore_errors=True)
|
||||
|
Loading…
Reference in New Issue
Block a user