about summary refs log tree commit diff
path: root/qc_app/parse.py
diff options
context:
space:
mode:
Diffstat (limited to 'qc_app/parse.py')
-rw-r--r--qc_app/parse.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/qc_app/parse.py b/qc_app/parse.py
index 1a1b686..b2a0156 100644
--- a/qc_app/parse.py
+++ b/qc_app/parse.py
@@ -76,7 +76,7 @@ def parse_status(job_id: str):
         filename = job.get("filename", "uploaded file")
         errors = jsonpickle.decode(
             job.get("errors", jsonpickle.encode(tuple())))
-        if status == "success":
+        if status == "success" or status == "aborted":
             return redirect(url_for("parse.results", job_id=job_id))
 
         if status == "parse-error":
@@ -107,7 +107,8 @@ def results(job_id: str):
         return render_template(
             "parse_results.html",
             errors=errors,
-            job_name = f"Parsing '{filename}'")
+            job_name = f"Parsing '{filename}'",
+            user_aborted = job.get("user_aborted"))
 
     return render_template("no_such_job.html", job_id=job_id)
 
@@ -129,3 +130,15 @@ def fail(job_id: str):
         return render_template("parse_failure.html", job=job)
 
     return render_template("no_such_job.html", job_id=job_id)
+
+@parsebp.route("/abort", methods=["POST"])
+def abort():
+    job_id = request.form["job_id"]
+
+    with Redis.from_url(app.config["REDIS_URL"], decode_responses=True) as rconn:
+        job = jobs.job(rconn, job_id)
+
+        if job:
+            rconn.hset(name=job_id, key="user_aborted", value=int(True))
+
+    return redirect(url_for("parse.parse_status", job_id=job_id))