diff options
author | Frederick Muriuki Muriithi | 2022-06-02 12:57:18 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2022-06-02 12:57:18 +0300 |
commit | 2f84b2eb1fecab4c381ad2dfd31277717cc9df2d (patch) | |
tree | c8a9080401ba40869454f55c88cd359bdbc393dd /qc_app/parse.py | |
parent | 219248568252e7291f20105ce589c87c5a85f433 (diff) | |
download | gn-uploader-2f84b2eb1fecab4c381ad2dfd31277717cc9df2d.tar.gz |
Enable user abortion of file parsing
Enable the user to abort the background parsing of the file.
Diffstat (limited to 'qc_app/parse.py')
-rw-r--r-- | qc_app/parse.py | 17 |
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)) |