Make delete user function a background task

This commit is contained in:
Patrick Jentsch
2020-04-23 08:24:11 +02:00
parent edc0b34032
commit 83c05d93b0
6 changed files with 25 additions and 32 deletions

View File

@ -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
View 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()

View File

@ -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'))