from flask import ( abort, redirect, render_template, send_from_directory, url_for ) from flask_login import current_user from app.models import Job, JobInput, JobResult from . import bp @bp.route('') def jobs(): # return redirect(url_for('main.dashboard', _anchor='jobs')) return render_template('jobs/jobs.html.j2', title='Jobs') @bp.route('/') def job(job_id): job = Job.query.get_or_404(job_id) if not (job.user == current_user or current_user.is_administrator): abort(403) return render_template( 'jobs/job.html.j2', title='Job', job=job ) @bp.route('//inputs//download') def download_job_input(job_id, job_input_id): job_input = JobInput.query.filter_by(job_id=job_id, id=job_input_id).first_or_404() if not (job_input.job.user == current_user or current_user.is_administrator): abort(403) return send_from_directory( job_input.path.parent, job_input.path.name, as_attachment=True, download_name=job_input.filename, mimetype=job_input.mimetype ) @bp.route('//results//download') def download_job_result(job_id, job_result_id): job_result = JobResult.query.filter_by(job_id=job_id, id=job_result_id).first_or_404() if not (job_result.job.user == current_user or current_user.is_administrator): abort(403) return send_from_directory( job_result.path.parent, job_result.path.name, as_attachment=True, download_name=job_result.filename, mimetype=job_result.mimetype )