aboutsummaryrefslogtreecommitdiff
path: root/qc_app/upload
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-01-05 13:08:38 +0300
committerFrederick Muriuki Muriithi2024-01-05 13:10:56 +0300
commit58a214a4a9be5fb219a798b62cdbf43d72280c74 (patch)
tree1ab9beaa142a4887e44aa6fe09e1206a959b024a /qc_app/upload
parent6200a60eb6f04a5d50bfe0ad366674dc49a08119 (diff)
downloadgn-uploader-58a214a4a9be5fb219a798b62cdbf43d72280c74.tar.gz
Initialise R/qtl2 bundle upload path
Initialise the upload path for R/qtl2 bundles. This commit adds UI that allows the user to select from existing species, before proceeding to the next stage.
Diffstat (limited to 'qc_app/upload')
-rw-r--r--qc_app/upload/__init__.py7
-rw-r--r--qc_app/upload/rqtl2.py31
2 files changed, 38 insertions, 0 deletions
diff --git a/qc_app/upload/__init__.py b/qc_app/upload/__init__.py
new file mode 100644
index 0000000..5f120d4
--- /dev/null
+++ b/qc_app/upload/__init__.py
@@ -0,0 +1,7 @@
+"""Package handling upload of files."""
+from flask import Blueprint
+
+from .rqtl2 import rqtl2
+
+upload = Blueprint("upload", __name__)
+upload.register_blueprint(rqtl2, url_prefix="/rqtl2")
diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py
new file mode 100644
index 0000000..e54f141
--- /dev/null
+++ b/qc_app/upload/rqtl2.py
@@ -0,0 +1,31 @@
+"""Module to handle uploading of R/qtl2 bundles."""
+
+from flask import (
+ flash,
+ request,
+ url_for,
+ redirect,
+ Blueprint,
+ render_template)
+
+from qc_app.dbinsert import species as all_species
+from qc_app.dbinsert import species_by_id, groups_by_species
+from qc_app.db_utils import with_db_connection
+
+rqtl2 = Blueprint("rqtl2", __name__)
+
+@rqtl2.route("/", methods=["GET", "POST"])
+@rqtl2.route("/select-species", methods=["POST"])
+def select_species():
+ """Select the species."""
+ if request.method == "GET":
+ return render_template("rqtl2/index.html", species=all_species())
+
+ species_id = request.form.get("species_id")
+ species = with_db_connection(
+ lambda conn: species_by_id(conn, species_id))
+ if bool(species):
+ return redirect(url_for(
+ "upload.rqtl2.select_population", species_id=species_id))
+ flash("Invalid species or no species selected!", "alert-error error-rqtl2")
+ return redirect(url_for("upload.rqtl2.select_species"))