Add delete functions for jobs and users.

This commit is contained in:
Stephan Porada
2019-09-17 14:36:15 +02:00
parent 683b59bb47
commit 09f7d7ac68
4 changed files with 67 additions and 25 deletions

View File

@ -7,7 +7,7 @@ from .. import db
from ..models import Corpus, Job
import os
import logging
import time
import threading
@main.route('/')
@ -145,17 +145,27 @@ def job_download(job_id):
@login_required
def delete_job(job_id):
logger = logging.getLogger(__name__)
logger.warning(job_id)
job = Job.query.filter_by(id=job_id).first()
logger.warning('Job status: {}'.format(job.status))
job.flag_for_stop()
logger.warning('Job status: {}'.format(job.status))
deleted = False
while deleted is False:
db.session.refresh(job)
if job.status == 'deleted':
logger.warning('Job status is deleted.')
time.sleep(5) # Wait 5 seconds before deleteing job and job files
job.delete_job() # See delete_job() method for further explanation
deleted = True
def background_delete(job_id, app):
with app.app_context():
logger.warning('Called by delete_thread.')
logger.warning('Job id is: {}.'.format(job_id))
job = Job.query.filter_by(id=job_id).first()
logger.warning('Job object is: {}'.format(job))
logger.warning('Job status: {}'.format(job.status))
job.flag_for_stop()
logger.warning('Job status: {}'.format(job.status))
deleted = False
while deleted is False:
db.session.refresh(job)
if job.status == 'deleted':
logger.warning('Job status is deleted.')
job.delete_job()
deleted = True
delete_thread = threading.Thread(target=background_delete,
args=(job_id,
current_app._get_current_object()))
delete_thread.start()
flash('Job has been deleted!')
return redirect(url_for('main.dashboard'))