about summary refs log tree commit diff
path: root/uploader/population/views.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-12-10 10:48:47 -0600
committerFrederick Muriuki Muriithi2025-12-10 10:48:47 -0600
commitb9a2e1239c6d9cbe233ad5dff7ed17ebfdf1c906 (patch)
treeda694585a1238a7afeadadf3bd2db55c6cbe7799 /uploader/population/views.py
parent724746438f9a64cf6556dcc7266393ef68132f55 (diff)
downloadgn-uploader-b9a2e1239c6d9cbe233ad5dff7ed17ebfdf1c906.tar.gz
Implement streamlined UI for populations.
Diffstat (limited to 'uploader/population/views.py')
-rw-r--r--uploader/population/views.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/uploader/population/views.py b/uploader/population/views.py
index 87a33d9..cfc3b70 100644
--- a/uploader/population/views.py
+++ b/uploader/population/views.py
@@ -19,6 +19,7 @@ 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
@@ -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))