about summary refs log tree commit diff
path: root/qc_app/upload
diff options
context:
space:
mode:
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"))