mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-14 16:55:42 +00:00
Make delete user function a background task
This commit is contained in:
parent
edc0b34032
commit
83c05d93b0
@ -1,13 +1,12 @@
|
||||
from flask import current_app, flash, redirect, render_template, url_for
|
||||
from flask import flash, redirect, render_template, url_for
|
||||
from flask_login import login_required
|
||||
from threading import Thread
|
||||
from . import admin
|
||||
from .forms import EditUserForm
|
||||
from .tables import AdminUserItem, AdminUserTable
|
||||
from .. import db
|
||||
from ..decorators import admin_required
|
||||
from ..models import Role, User
|
||||
from ..profile.background_functions import delete_user_
|
||||
from ..profile import tasks as profile_tasks
|
||||
|
||||
|
||||
@admin.route('/')
|
||||
@ -39,9 +38,7 @@ def user(user_id):
|
||||
@admin_required
|
||||
def delete_user(user_id):
|
||||
user = User.query.get_or_404(user_id)
|
||||
thread = Thread(target=delete_user_,
|
||||
args=(current_app._get_current_object(), user.id))
|
||||
thread.start()
|
||||
profile_tasks.delete_user(user_id)
|
||||
flash('User has been deleted!')
|
||||
return redirect(url_for('admin.index'))
|
||||
|
||||
|
@ -4,9 +4,7 @@ from flask_login import UserMixin, AnonymousUserMixin
|
||||
from itsdangerous import BadSignature, TimedJSONWebSignatureSerializer
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from werkzeug.utils import secure_filename
|
||||
from . import db, logger, login_manager
|
||||
import os
|
||||
import shutil
|
||||
from . import db, login_manager
|
||||
|
||||
|
||||
class Permission:
|
||||
@ -212,13 +210,6 @@ class User(UserMixin, db.Model):
|
||||
job.delete()
|
||||
for corpus in self.corpora:
|
||||
corpus.delete()
|
||||
path = os.path.join(current_app.config['NOPAQUE_STORAGE'],
|
||||
str(self.id))
|
||||
try:
|
||||
shutil.rmtree(path)
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
pass
|
||||
db.session.delete(self)
|
||||
db.session.commit()
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
from ..models import User
|
||||
|
||||
|
||||
def delete_user_(app, user_id):
|
||||
with app.app_context():
|
||||
user = User.query.get(user_id)
|
||||
if user is None:
|
||||
raise Exception('User {} not found!'.format(user_id))
|
||||
user.delete()
|
18
app/profile/tasks.py
Normal file
18
app/profile/tasks.py
Normal file
@ -0,0 +1,18 @@
|
||||
from .. import logger
|
||||
from ..decorators import background
|
||||
from ..models import User
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
@background
|
||||
def delete_user(app, user_id):
|
||||
logger.warning('aufgerufen')
|
||||
with app.app_context():
|
||||
user = User.query.get(user_id)
|
||||
if user is None:
|
||||
raise Exception('User {} not found!'.format(user_id))
|
||||
logger.warning('deleting user')
|
||||
path = os.path.join(app.config['NOPAQUE_STORAGE'], str(user.id))
|
||||
shutil.rmtree(path, ignore_errors=True)
|
||||
user.delete()
|
@ -1,8 +1,7 @@
|
||||
from flask import current_app, flash, redirect, render_template, url_for
|
||||
from flask import flash, redirect, render_template, url_for
|
||||
from flask_login import current_user, login_required, logout_user
|
||||
from threading import Thread
|
||||
from . import profile
|
||||
from .background_functions import delete_user_
|
||||
from . import tasks
|
||||
from .forms import EditEmailForm, EditGeneralSettingsForm, EditPasswordForm
|
||||
from .. import db
|
||||
|
||||
@ -56,9 +55,7 @@ def delete():
|
||||
"""
|
||||
View to delete yourslef and all associated data.
|
||||
"""
|
||||
thread = Thread(target=delete_user_,
|
||||
args=(current_app._get_current_object(), current_user.id))
|
||||
thread.start()
|
||||
tasks.delete_user(current_user.id)
|
||||
logout_user()
|
||||
flash('Your account has been deleted!')
|
||||
return redirect(url_for('main.index'))
|
||||
|
@ -45,7 +45,6 @@ services:
|
||||
- "./logs:/home/nopaqued/logs"
|
||||
- "../opaque_daemon/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh"
|
||||
- "../opaque_daemon/nopaqued.py:/home/nopaqued/nopaqued.py"
|
||||
- "../opaque_daemon/merge_corpus_files.py:/home/nopaqued/merge_corpus_files.py"
|
||||
- "../opaque_daemon/requirements.txt:/home/nopaqued/requirements.txt"
|
||||
- "$HOME/.docker:/home/nopaqued/.docker"
|
||||
db:
|
||||
|
Loading…
Reference in New Issue
Block a user