Add download function to imported result.

This commit is contained in:
Stephan Porada
2020-07-08 16:03:44 +02:00
parent ea7bb82661
commit 84f1d7dc39
3 changed files with 28 additions and 2 deletions

View File

@ -6,7 +6,7 @@ from ..models import Result, ResultFile, User
from .forms import ImportResultsForm
from datetime import datetime
from flask import (abort, render_template, current_app, request, redirect,
flash, url_for, make_response)
flash, url_for, make_response, send_from_directory)
from flask_login import current_user, login_required
import json
import os
@ -71,9 +71,11 @@ def results_overview():
# get all results of current user
results = User.query.get(current_user.id).results
logger.warning(results)
def __p_time(time_str):
# helper to convert the datetime into a nice readable string
return datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S.%f')
# convert results into a list of dicts to add the measier to list.js in
# the template
results = [dict(query=r.corpus_metadata['query'],
@ -82,6 +84,7 @@ def results_overview():
corpus_creation_date=__p_time(r.corpus_metadata['corpus_creation_date']), # noqa
corpus_analysis_date=__p_time(r.corpus_metadata['corpus_analysis_date']), # noqa
corpus_type=r.corpus_metadata['corpus_type'],
file_id=r.file[0].id,
id=r.id)
for r in results]
return render_template('results/results.html.j2',
@ -141,3 +144,19 @@ def result_delete(result_id):
tasks.delete_result(result_id)
flash('Result deleted!')
return redirect(url_for('results.results_overview'))
@results.route('/<int:result_id>/file/<int:result_file_id>/download')
@login_required
def result_download(result_id, result_file_id):
result_file = ResultFile.query.get_or_404(result_file_id)
if not result_file.result_id == result_id:
abort(404)
if not (result_file.result.creator == current_user
or current_user.is_administrator()):
abort(403)
dir = os.path.join(current_app.config['NOPAQUE_STORAGE'],
result_file.dir)
return send_from_directory(as_attachment=True,
directory=dir,
filename=result_file.filename)