aboutsummaryrefslogtreecommitdiff
path: root/qc_app/upload/rqtl2.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-01-22 08:54:29 +0300
committerFrederick Muriuki Muriithi2024-01-22 08:54:29 +0300
commitf875926183e2e26881c3288e2f5c3d8ffe6397b8 (patch)
tree9e1ceb14a61bd5e6351ff5ed706fd3c02e7270bc /qc_app/upload/rqtl2.py
parentcdd4dc456e56bb4eb055e1cb7f2518d45fb3bfb9 (diff)
downloadgn-uploader-f875926183e2e26881c3288e2f5c3d8ffe6397b8.tar.gz
UI: Show progress of R/qtl2 bundle processing.
Diffstat (limited to 'qc_app/upload/rqtl2.py')
-rw-r--r--qc_app/upload/rqtl2.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py
index 7ba90c2..8a0d8b4 100644
--- a/qc_app/upload/rqtl2.py
+++ b/qc_app/upload/rqtl2.py
@@ -1,9 +1,9 @@
"""Module to handle uploading of R/qtl2 bundles."""
import sys
import json
-from uuid import uuid4
from pathlib import Path
from datetime import date
+from uuid import UUID, uuid4
from zipfile import ZipFile, is_zipfile
from redis import Redis
@@ -581,4 +581,26 @@ def confirm_bundle_details(species_id: int, population_id: int):
redisuri,
f"{app.config['UPLOAD_FOLDER']}/job_errors")
- raise NotImplementedError
+ return redirect(url_for("upload.rqtl2.rqtl2_processing_status",
+ jobid=jobid))
+
+@rqtl2.route("/status/<uuid:jobid>")
+def rqtl2_processing_status(jobid: UUID):
+ """Retrieve the status of the job processing the uploaded R/qtl2 bundle."""
+ with Redis.from_url(app.config["REDIS_URL"], decode_responses=True) as rconn:
+ thejob = jobs.job(rconn, jobid)
+ if not bool(thejob):
+ return render_template("rqtl2/no-such-job.html", jobid=jobid)
+
+ logmessages = rconn.lrange(thejob.get("log-messagelist"), 0, -1) or []
+
+ if thejob["status"] == "error":
+ return render_template(
+ "rqtl2/rqtl2-job-error.html", job=thejob, messages=logmessages)
+ if thejob["status"] == "success":
+ return render_template("rqtl2/rqtl2-job-results.html",
+ job=thejob,
+ messages=logmessages)
+
+ return render_template(
+ "rqtl2/rqtl2-job-status.html", job=thejob, messages=logmessages)