Skip to content
Snippets Groups Projects
Commit 93330c0e authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

Remove api routes from main package.

parent 47c3edeb
No related branches found
No related tags found
No related merge requests found
from flask import abort, current_app, flash, jsonify, redirect, request, render_template, url_for, send_from_directory from flask import (abort, current_app, flash, redirect, request,
render_template, url_for, send_from_directory)
from flask_login import current_user, login_required from flask_login import current_user, login_required
from ..models import Corpus, User, Job from ..models import Corpus, User
from ..tables import AdminUserTable, AdminUserItem from ..tables import AdminUserTable, AdminUserItem
from . import main from . import main
from .forms import CreateCorpusForm from .forms import CreateCorpusForm
from ..decorators import admin_required from ..decorators import admin_required
from .. import db from .. import db
import json
import os import os
@main.route('/api/v1.0/corpora')
@login_required
def api_corpora():
corpora = []
for corpus in current_user.corpora.all():
corpora.append({'id': corpus.id,
'creation_date': corpus.creation_date.timestamp(),
'description': corpus.description,
'title': corpus.title})
return jsonify(corpora)
@main.route('/api/v1.0/corpora/<int:corpus_id>')
@login_required
def api_corpus():
corpus = []
@main.route('/api/v1.0/jobs')
@login_required
def api_jobs():
jobs = []
for job in current_user.jobs.all():
jobs.append({'id': job.id,
'creation_date': job.creation_date.timestamp(),
'description': job.description,
'end_date': job.end_date.timestamp() if job.end_date else None,
'mem_mb': job.mem_mb,
'n_cores': job.n_cores,
'service': job.service,
'service_args': job.service_args,
'service_version': job.service_version,
'status': job.status,
'title': job.title})
return jsonify(jobs)
@main.route('/') @main.route('/')
def index(): def index():
return render_template('main/index.html.j2', title='Opaque') return render_template('main/index.html.j2', title='Opaque')
...@@ -159,15 +122,14 @@ def job(job_id): ...@@ -159,15 +122,14 @@ def job(job_id):
@login_required @login_required
def job_download(job_id): def job_download(job_id):
file = request.args.get('file') file = request.args.get('file')
job = Job.query.filter_by(id=job_id).first() job = current_user.jobs.filter_by(id=job_id).first()
if not file or not job: if not file or not job:
print('Job not found.') print('File not found.')
abort(404) abort(404)
elif not job.user_id == current_user.id:
print('Job does not belong to current user.')
abort(403)
dir = os.path.join(current_app.config['OPAQUE_STORAGE'], dir = os.path.join(current_app.config['OPAQUE_STORAGE'],
str(current_user.id), str(current_user.id),
'jobs', 'jobs',
str(job.id)) str(job.id))
return send_from_directory(directory=dir, filename=file, as_attachment=True) return send_from_directory(as_attachment=True,
directory=dir,
filename=file)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment