about summary refs log tree commit diff
path: root/uploader/population/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/population/views.py')
-rw-r--r--uploader/population/views.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/uploader/population/views.py b/uploader/population/views.py
index 270dd5f..8d4ceb7 100644
--- a/uploader/population/views.py
+++ b/uploader/population/views.py
@@ -7,18 +7,19 @@ from MySQLdb.cursors import DictCursor
 from gn_libs.mysqldb import database_connection
 from flask import (flash,
                    request,
-                   url_for,
                    redirect,
                    Blueprint,
                    current_app as app)
 
 from uploader.samples.views import samplesbp
+from uploader.flask_extensions import url_for
 from uploader.oauth2.client import oauth2_post
 from uploader.ui import make_template_renderer
 from uploader.authorisation import require_login
 from uploader.genotypes.views import genotypesbp
 from uploader.datautils import enumerate_sequence
 from uploader.phenotypes.views import phenotypesbp
+from uploader.phenotypes.models import datasets_by_population
 from uploader.expression_data.views import exprdatabp
 from uploader.species.models import all_species, species_by_id
 from uploader.monadic_requests import make_either_error_handler
@@ -100,7 +101,7 @@ def create_population(species_id: int):
             return render_template(
                 "populations/create-population.html",
                 species=species,
-                families = population_families(conn),
+                families = population_families(conn, species["SpeciesId"]),
                 genetic_types = population_genetic_types(conn),
                 mapping_methods=(
                     {"id": "0", "value": "No mapping support"},
@@ -153,7 +154,7 @@ def create_population(species_id: int):
             "FullName": population_fullname,
             "InbredSetCode": request.form.get("population_code") or None,
             "Description": request.form.get("population_description") or None,
-            "Family": request.form.get("population_family") or None,
+            "Family": request.form.get("population_family").strip() or None,
             "MappingMethodId": request.form.get("population_mapping_method_id"),
             "GeneticType": request.form.get("population_genetic_type") or None
         })
@@ -193,10 +194,15 @@ def create_population(species_id: int):
 @require_login
 def view_population(species_id: int, population_id: int):
     """View the details of a population."""
+    streamlined_ui =  request.args.get("streamlined_ui")
     with database_connection(app.config["SQL_URI"]) as conn:
         species = species_by_id(conn, species_id)
         population = population_by_species_and_id(conn, species_id, population_id)
+        datasets = datasets_by_population(conn, species_id, population_id)
         error = False
+        if len(datasets) > 1:
+            error = True
+            flash("Got more than one dataset for the population.", "alert alert-danger")
 
         if not bool(species):
             flash("You must select a species.", "alert-danger")
@@ -207,9 +213,18 @@ def view_population(species_id: int, population_id: int):
             error = True
 
         if error:
-            return redirect(url_for("species.populations.index"))
+            return redirect(url_for(("species.view_species"
+                                     if bool(streamlined_ui)
+                                     else "species.populations.index"),
+                                    species_id=species["SpeciesId"],
+                                    streamlined_ui=streamlined_ui))
 
-        return render_template("populations/view-population.html",
+        return render_template(("populations/sui-view-population.html"
+                                if bool(streamlined_ui)
+                                else "populations/view-population.html"),
                                species=species,
                                population=population,
-                               activelink="view-population")
+                               **({"dataset": datasets[0]} if len(datasets) == 1 else {}),
+                               activelink="view-population",
+                               streamlined_ui=streamlined_ui,
+                               view_under_construction=request.args.get("view_under_construction", False))