From 0cb51a34c4ef15e5a4e2616616c7b44e539b023f Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <p.jentsch@uni-bielefeld.de>
Date: Thu, 13 Feb 2020 15:08:15 +0100
Subject: [PATCH] Remove unnecessary job status

---
 app/models.py         | 15 ++++++++++-----
 app/services/views.py | 10 +++++-----
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/app/models.py b/app/models.py
index 5aeb8f17..e72d7860 100644
--- a/app/models.py
+++ b/app/models.py
@@ -322,11 +322,16 @@ class Job(db.Model):
         """
         Delete the job and its inputs and outputs from database and filesystem.
         """
-        self.status = 'stopping'
-        db.session.commit()
-        while self.status != 'deleted':
-            sleep(1)
-            db.session.refresh(self)
+        if self.status != 'complete' and self.status != 'failed':
+            self.status = 'canceling'
+            db.session.commit()
+            while self.status != 'canceled':
+                # In case the daemon started a submitted job meanwhile
+                if self.status == 'running':
+                    self.status = 'canceling'
+                    db.session.commit()
+                sleep(1)
+                db.session.refresh(self)
         path = os.path.join(current_app.config['NOPAQUE_STORAGE'],
                             str(self.user_id), 'jobs', str(self.id))
         try:
diff --git a/app/services/views.py b/app/services/views.py
index 925bb472..971a1868 100644
--- a/app/services/views.py
+++ b/app/services/views.py
@@ -51,16 +51,16 @@ def service(service):
         db.session.add(job)
         db.session.commit()
         relative_dir = os.path.join(str(job.user_id), 'jobs', str(job.id))
-        absolut_dir = os.path.join(
-            current_app.config['NOPAQUE_STORAGE'], relative_dir)
+        absolut_dir = os.path.join(current_app.config['NOPAQUE_STORAGE'],
+                                   relative_dir)
         try:
             os.makedirs(absolut_dir)
         except OSError:
             job.delete()
             flash('Internal Server Error')
-            return make_response(
-                {'redirect_url': url_for('services.service', service=service)},
-                500)
+            return make_response({'redirect_url': url_for('services.service',
+                                                          service=service)},
+                                 500)
         else:
             for file in add_job_form.files.data:
                 filename = secure_filename(file.filename)
-- 
GitLab