diff --git a/app/models.py b/app/models.py index 5aeb8f17a65b775c744d1decd61c697c36134fa1..e72d786099e3bee28a35a635b33b41786b9af04f 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 925bb4722f45f1391ee04c1912a4c4c9b9fb422d..971a186819d99b3cdb0de0d3c3cde1f432890b0f 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)