mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-03 20:02:47 +00:00 
			
		
		
		
	Add delete functions for jobs and users.
This commit is contained in:
		@@ -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'))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user