From d48cfff120562592d6535d493412ee1881487c38 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Tue, 17 Sep 2024 12:58:13 -0500 Subject: Provide entry-point of genotypes. --- uploader/genotypes/views.py | 34 ++++++++++++++++++++++++++++++--- uploader/templates/genotypes/index.html | 14 +++++++++++++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/uploader/genotypes/views.py b/uploader/genotypes/views.py index 2b4ed10..65cdf4b 100644 --- a/uploader/genotypes/views.py +++ b/uploader/genotypes/views.py @@ -1,12 +1,40 @@ """Views for the genotypes.""" -from flask import Blueprint, render_template +from flask import (flash, + request, + url_for, + redirect, + Blueprint, + render_template, + current_app as app) +from uploader.datautils import order_by_family from uploader.authorisation import require_login +from uploader.db_utils import database_connection +from uploader.species.models import all_species, species_by_id genotypesbp = Blueprint("genotypes", __name__) -@genotypesbp.route("/genotypes") +@genotypesbp.route("populations/genotypes", methods=["GET"]) @require_login def index(): """Direct entry-point for genotypes.""" - return render_template("genotypes/index.html") + with database_connection(app.config["SQL_URI"]) as conn: + if not bool(request.args.get("species_id")): + return render_template("genotypes/index.html", + species=order_by_family(all_species(conn)), + activelink="genotypes") + species = species_by_id(conn, request.args.get("species_id")) + if not bool(species): + flash(f"Could not find species with ID '{request.args.get('species_id')}'!", + "alert-danger") + return redirect(url_for("species.populations.genotypes.index")) + return redirect(url_for("species.populations.genotypes.select_population", + species_id=species["SpeciesId"])) + + +@genotypesbp.route("//genotypes/select-population", + methods=["GET"]) +@require_login +def select_population(species_id: int): + """Select the population under which the genotypes go.""" + return f"Would select population with species {species_id}…" diff --git a/uploader/templates/genotypes/index.html b/uploader/templates/genotypes/index.html index 4f5c3a8..9ffea73 100644 --- a/uploader/templates/genotypes/index.html +++ b/uploader/templates/genotypes/index.html @@ -11,7 +11,19 @@ {{flash_all_messages()}}
-

We have not implemented this part yet!

+

+ This section allows you to upload genotype information for your experiments, + in the case that you have not previously done so. +

+

+ We'll need to link the genotypes to the species and population, so do please + go ahead and select those in the next two steps. +

+
+ +
+ {{select_species_form(url_for("species.populations.genotypes.index"), + species)}}
-- cgit v1.2.3