mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 12:22:47 +00:00 
			
		
		
		
	Add download function to imported result.
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user