aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-01-17 05:02:34 +0300
committerFrederick Muriuki Muriithi2024-01-17 05:39:09 +0300
commit4e3f6e51b92d9c56f77452bd4b723323a526bc52 (patch)
treec1c2e1ada710352a5f1deafe2f79261973f1d138
parent29e24855d0b223edfbf20bbe5799db7a9e0ad21e (diff)
downloadgn-uploader-4e3f6e51b92d9c56f77452bd4b723323a526bc52.tar.gz
Enable selecting from existing genotype datasets.
-rw-r--r--qc_app/templates/rqtl2/select-geno-dataset.html2
-rw-r--r--qc_app/upload/rqtl2.py35
2 files changed, 34 insertions, 3 deletions
diff --git a/qc_app/templates/rqtl2/select-geno-dataset.html b/qc_app/templates/rqtl2/select-geno-dataset.html
index 3487b6e..64f886e 100644
--- a/qc_app/templates/rqtl2/select-geno-dataset.html
+++ b/qc_app/templates/rqtl2/select-geno-dataset.html
@@ -33,7 +33,7 @@
<legend>Datasets</legend>
<label for="select:geno-datasets">Dataset</label>
<select id="select:geno-datasets"
- name="geno-datasets"
+ name="geno-dataset-id"
required="required"
{%if datasets | length == 0%}
disabled="disabled"
diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py
index 146c301..7db005c 100644
--- a/qc_app/upload/rqtl2.py
+++ b/qc_app/upload/rqtl2.py
@@ -189,6 +189,15 @@ def check_errors(conn, *args, **kwargs) -> Optional[Response]:
pgsrc="error"),
code=307)
+ if ("geno-dataset" in args and
+ not bool(request.form.get("geno-dataset-id"))):
+ flash("No genotype dataset was provided!", "alert-error alert-rqtl2")
+ return redirect(url_for("upload.rqtl2.select_geno_dataset",
+ species_id=species_id,
+ population_id=population_id,
+ pgsrc="error"),
+ code=307)
+
return False
@rqtl2.route(("/upload/species/<int:species_id>/population/<int:population_id>"
@@ -208,7 +217,7 @@ def select_dataset_info(species_id: int, population_id: int):
thefile = fullpath(form["rqtl2_bundle_file"])
with ZipFile(str(thefile), "r") as zfile:
cdata = r_qtl2.control_data(zfile)
- if "geno" in cdata and not bool(form.get("geno_datasetid")):
+ if "geno" in cdata and not bool(form.get("geno-dataset-id")):
return render_template(
"rqtl2/select-geno-dataset.html",
species=species_by_id(conn, species_id),
@@ -225,7 +234,29 @@ def select_dataset_info(species_id: int, population_id: int):
methods=["POST"])
def select_geno_dataset(species_id: int, population_id: int) -> Response:
"""Select from existing geno datasets."""
- return "IMPLEMENT THIS!!!"
+ with database_connection(app.config["SQL_URI"]) as conn:
+ error = check_errors(
+ conn, "species", "population", "rqtl2_bundle_file", "geno-dataset")
+ if bool(error):
+ return error
+
+ geno_dset = geno_dataset_by_species_and_population(
+ conn, species_id, population_id)
+ if not bool(geno_dset):
+ flash("No genotype dataset was provided!",
+ "alert-error alert-rqtl2")
+ return redirect(url_for("upload.rqtl2.select_geno_dataset",
+ species_id=species_id,
+ population_id=population_id,
+ pgsrc="error"),
+ code=307)
+
+ flash("Genotype accepted", "alert-success alert-rqtl2")
+ return redirect(url_for("upload.rqtl2.select_dataset_info",
+ species_id=species_id,
+ population_id=population_id,
+ pgsrc="upload.rqtl2.select_geno_dataset"),
+ code=307)
@rqtl2.route(("/upload/species/<int:species_id>/population/<int:population_id>"
"/rqtl2-bundle/create-geno-dataset"),