From 3a989534cfb54df720f34675a61c79dda00b2ab3 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <pjentsch@sfb1288inf-Laptop.fritz.box>
Date: Thu, 23 Apr 2020 08:35:18 +0200
Subject: [PATCH] Make the app arg in @background functions a bit less magical

---
 app/corpora/tasks.py | 9 ++++++---
 app/decorators.py    | 4 ++--
 app/jobs/tasks.py    | 3 ++-
 app/profile/tasks.py | 6 ++----
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/app/corpora/tasks.py b/app/corpora/tasks.py
index 480cb7aa..c1ad6d83 100644
--- a/app/corpora/tasks.py
+++ b/app/corpora/tasks.py
@@ -7,7 +7,8 @@ import shutil
 
 
 @background
-def build_corpus(app, corpus_id):
+def build_corpus(corpus_id, *args, **kwargs):
+    app = kwargs['app']
     with app.app_context():
         corpus = Corpus.query.get(corpus_id)
         if corpus is None:
@@ -48,7 +49,8 @@ def build_corpus(app, corpus_id):
 
 
 @background
-def delete_corpus(app, corpus_id):
+def delete_corpus(corpus_id, *args, **kwargs):
+    app = kwargs['app']
     with app.app_context():
         corpus = Corpus.query.get(corpus_id)
         if corpus is None:
@@ -60,7 +62,8 @@ def delete_corpus(app, corpus_id):
 
 
 @background
-def delete_corpus_file(app, corpus_file_id):
+def delete_corpus_file(corpus_file_id, *args, **kwargs):
+    app = kwargs['app']
     with app.app_context():
         corpus_file = CorpusFile.query.get(corpus_file_id)
         if corpus_file is None:
diff --git a/app/decorators.py b/app/decorators.py
index fe740fef..a6a25fa1 100644
--- a/app/decorators.py
+++ b/app/decorators.py
@@ -19,8 +19,8 @@ def background(f):
     ''' This decorator executes a function in a Thread '''
     @wraps(f)
     def wrapped(*args, **kwargs):
-        app = current_app._get_current_object()
-        thread = Thread(target=f, args=(app, *args), kwargs=kwargs)
+        kwargs['app'] = current_app._get_current_object()
+        thread = Thread(target=f, args=args, kwargs=kwargs)
         thread.start()
         return thread
     return wrapped
diff --git a/app/jobs/tasks.py b/app/jobs/tasks.py
index 56b4462c..58e66d83 100644
--- a/app/jobs/tasks.py
+++ b/app/jobs/tasks.py
@@ -7,7 +7,8 @@ import shutil
 
 
 @background
-def delete_job(app, job_id):
+def delete_job(job_id, *args, **kwargs):
+    app = kwargs['app']
     with app.app_context():
         job = Job.query.get(job_id)
         if job is None:
diff --git a/app/profile/tasks.py b/app/profile/tasks.py
index c27d6b3b..a4f61dac 100644
--- a/app/profile/tasks.py
+++ b/app/profile/tasks.py
@@ -1,4 +1,3 @@
-from .. import logger
 from ..decorators import background
 from ..models import User
 import os
@@ -6,13 +5,12 @@ import shutil
 
 
 @background
-def delete_user(app, user_id):
-    logger.warning('aufgerufen')
+def delete_user(user_id, *args, **kwargs):
+    app = kwargs['app']
     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()
-- 
GitLab