from flask import abort, jsonify, request from flask_login import current_user, login_required from . import api from ..models import Job @api.route('/v1.0/corpora') @login_required def 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) @api.route('/v1.0/corpora/') @login_required def corpus(corpus_id): corpus = current_user.corpora.filter_by(id=corpus_id).first() if not corpus: return abort(404) return jsonify({'id': corpus.id, 'creation_date': corpus.creation_date, 'description': corpus.description, 'title': corpus.title}) @api.route('/v1.0/jobs') @login_required def jobs(): jobs = [] all = request.args.get('all') if all and all.lower() == 'true': if current_user.is_administrator(): jobs_query = Job.query else: return abort(403) else: jobs_query = current_user.jobs for job in jobs_query.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) @api.route('/v1.0/jobs/') @login_required def job(job_id): job = current_user.jobs.filter_by(id=job_id).first() if not job: return abort(404) return jsonify({'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})