mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-12 09:00:40 +00:00
Add delete corpora function and function to view an delete foreign jobs and corpora.
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
from app.utils import background_delete_job
|
||||
from app.utils import background_delete_job, background_delete_corpus
|
||||
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 . import main
|
||||
from .forms import CreateCorpusForm
|
||||
from .. import db
|
||||
from ..models import Corpus
|
||||
from ..models import Corpus, Job
|
||||
import os
|
||||
import threading
|
||||
|
||||
@ -18,13 +18,16 @@ def index():
|
||||
@main.route('/corpora/<int:corpus_id>')
|
||||
@login_required
|
||||
def corpus(corpus_id):
|
||||
corpus = current_user.corpora.filter_by(id=corpus_id).first()
|
||||
if (current_user.is_administrator()):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
else:
|
||||
corpus = current_user.corpora.filter_by(id=corpus_id).first()
|
||||
if not corpus:
|
||||
print('Corpus not found.')
|
||||
abort(404)
|
||||
|
||||
dir = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
|
||||
str(current_user.id),
|
||||
str(corpus.user_id),
|
||||
'corpora',
|
||||
str(corpus.id))
|
||||
files = {}
|
||||
@ -42,12 +45,15 @@ def corpus(corpus_id):
|
||||
@login_required
|
||||
def corpus_download(corpus_id):
|
||||
file = request.args.get('file')
|
||||
corpus = current_user.corpora.filter_by(id=corpus_id).first()
|
||||
if (current_user.is_administrator()):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
else:
|
||||
corpus = current_user.corpora.filter_by(id=corpus_id).first()
|
||||
if not file or not corpus:
|
||||
print('File not found.')
|
||||
abort(404)
|
||||
dir = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
|
||||
str(current_user.id),
|
||||
str(corpus.user_id),
|
||||
'corpora',
|
||||
str(corpus.id))
|
||||
return send_from_directory(as_attachment=True,
|
||||
@ -91,13 +97,16 @@ def dashboard():
|
||||
@main.route('/jobs/<int:job_id>')
|
||||
@login_required
|
||||
def job(job_id):
|
||||
job = current_user.jobs.filter_by(id=job_id).first()
|
||||
if (current_user.is_administrator()):
|
||||
job = Job.query.get_or_404(job_id)
|
||||
else:
|
||||
job = current_user.jobs.filter_by(id=job_id).first()
|
||||
if not job:
|
||||
print('Job not found.')
|
||||
abort(404)
|
||||
|
||||
dir = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
|
||||
str(current_user.id),
|
||||
str(job.user_id),
|
||||
'jobs',
|
||||
str(job.id))
|
||||
files = {}
|
||||
@ -126,12 +135,15 @@ def job(job_id):
|
||||
@login_required
|
||||
def job_download(job_id):
|
||||
file = request.args.get('file')
|
||||
job = current_user.jobs.filter_by(id=job_id).first()
|
||||
if (current_user.is_administrator()):
|
||||
job = Job.query.get_or_404(job_id)
|
||||
else:
|
||||
job = current_user.jobs.filter_by(id=job_id).first()
|
||||
if not file or not job:
|
||||
print('File not found.')
|
||||
abort(404)
|
||||
dir = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
|
||||
str(current_user.id),
|
||||
str(job.user_id),
|
||||
'jobs',
|
||||
str(job.id))
|
||||
return send_from_directory(as_attachment=True,
|
||||
@ -149,3 +161,15 @@ def delete_job(job_id):
|
||||
delete_thread.start()
|
||||
flash('Job has been deleted!')
|
||||
return redirect(url_for('main.dashboard'))
|
||||
|
||||
|
||||
@main.route('/corpora/<int:corpus_id>/delete')
|
||||
@login_required
|
||||
def delete_corpus(corpus_id):
|
||||
delete_thread = threading.Thread(
|
||||
target=background_delete_corpus,
|
||||
args=(current_app._get_current_object(), corpus_id)
|
||||
)
|
||||
delete_thread.start()
|
||||
flash('Corpus has been deleted!')
|
||||
return redirect(url_for('main.dashboard'))
|
||||
|
Reference in New Issue
Block a user