about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-12-16 11:15:00 -0600
committerFrederick Muriuki Muriithi2025-12-16 11:15:00 -0600
commitd20da623de1946055e72cd42f9b42f9021ace9f6 (patch)
tree9b9c8b1a81b03af9f7fa073c100046852de341dc
parentc2c5d12e216bb0fe680cdd9fba81985b37d70d13 (diff)
downloadgn-uploader-d20da623de1946055e72cd42f9b42f9021ace9f6.tar.gz
Provide necessary values to render UI.
-rw-r--r--uploader/population/views.py39
1 files changed, 29 insertions, 10 deletions
diff --git a/uploader/population/views.py b/uploader/population/views.py
index 8d4ceb7..1f84ddb 100644
--- a/uploader/population/views.py
+++ b/uploader/population/views.py
@@ -19,11 +19,12 @@ 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
 from uploader.input_validation import is_valid_representative_name
+from uploader.phenotypes.models import (dataset_phenotypes,
+                                        datasets_by_population)
 
 from .models import (save_population,
                      population_families,
@@ -219,12 +220,30 @@ def view_population(species_id: int, population_id: int):
                                     species_id=species["SpeciesId"],
                                     streamlined_ui=streamlined_ui))
 
-        return render_template(("populations/sui-view-population.html"
-                                if bool(streamlined_ui)
-                                else "populations/view-population.html"),
-                               species=species,
-                               population=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))
+        _datasets = datasets_by_population(
+            conn, species["SpeciesId"], population["Id"])
+        assert len(datasets) == 0 or len(datasets) == 1, (
+            "We expect only one phenotypes dataset per population.")
+        _kwargs = {
+            "species": species,
+            "population": population,
+            "activelink": "view-population",
+            "streamlined_ui": streamlined_ui,
+            "view_under_construction": request.args.get(
+                "view_under_construction", False)
+        }
+
+        if len(_datasets) == 1:
+            _dataset = _datasets[0]
+            _kwargs = {
+                **_kwargs,
+                "dataset": _dataset,
+                "phenotypes": enumerate_sequence(
+                    dataset_phenotypes(conn, population["Id"], _dataset["Id"]))
+            }
+
+        return render_template(
+            ("populations/sui-view-population.html"
+             if bool(streamlined_ui)
+             else "populations/view-population.html"),
+            **_kwargs)