diff options
Diffstat (limited to 'uploader/genotypes/views.py')
-rw-r--r-- | uploader/genotypes/views.py | 34 |
1 files changed, 31 insertions, 3 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("/<int:species_id>/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}…" |