about summary refs log tree commit diff
path: root/uploader/population
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/population')
-rw-r--r--uploader/population/views.py38
1 files changed, 28 insertions, 10 deletions
diff --git a/uploader/population/views.py b/uploader/population/views.py
index 8d4ceb7..a6e2358 100644
--- a/uploader/population/views.py
+++ b/uploader/population/views.py
@@ -11,6 +11,8 @@ from flask import (flash,
                    Blueprint,
                    current_app as app)
 
+from uploader.sui import sui_template
+
 from uploader.samples.views import samplesbp
 from uploader.flask_extensions import url_for
 from uploader.oauth2.client import oauth2_post
@@ -19,11 +21,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 +222,27 @@ 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(sui_template("populations/view-population.html"),
+                               **_kwargs)