about summary refs log tree commit diff
path: root/uploader/genotypes
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/genotypes')
-rw-r--r--uploader/genotypes/models.py16
-rw-r--r--uploader/genotypes/views.py13
2 files changed, 29 insertions, 0 deletions
diff --git a/uploader/genotypes/models.py b/uploader/genotypes/models.py
index 53c5fb8..642caa6 100644
--- a/uploader/genotypes/models.py
+++ b/uploader/genotypes/models.py
@@ -39,3 +39,19 @@ def genotype_markers(
         cursor.execute(_query, (species_id,))
         debug_query(cursor)
         return tuple(dict(row) for row in cursor.fetchall())
+
+
+def genotype_datasets(
+        conn: mdb.Connection,
+        species_id: int,
+        population_id: int
+) -> tuple[dict, ...]:
+    """Retrieve genotype datasets from the database."""
+    with conn.cursor(cursorclass=DictCursor) as cursor:
+        cursor.execute(
+            "SELECT gf.* FROM Species AS s INNER JOIN InbredSet AS iset "
+            "ON s.Id=iset.SpeciesId INNER JOIN GenoFreeze AS gf "
+            "ON iset.Id=gf.InbredSetId "
+            "WHERE s.Id=%s AND iset.Id=%s",
+            (species_id, population_id))
+        return tuple(dict(row) for row in cursor.fetchall())
diff --git a/uploader/genotypes/views.py b/uploader/genotypes/views.py
index 2ff9965..294da0e 100644
--- a/uploader/genotypes/views.py
+++ b/uploader/genotypes/views.py
@@ -15,6 +15,7 @@ from uploader.population.models import (populations_by_species,
                                         population_by_species_and_id)
 
 from .models import (genotype_markers,
+                     genotype_datasets,
                      genotype_markers_count,
                      genocode_by_population)
 
@@ -97,6 +98,8 @@ def list_genotypes(species_id: int, population_id: int):
                                    conn, population_id),
                                total_markers=genotype_markers_count(
                                    conn, species_id),
+                               datasets=genotype_datasets(
+                                   conn, species_id, population_id),
                                activelink="list-genotypes")
 
 
@@ -125,3 +128,13 @@ def list_markers(species_id: int):
                                count=count,
                                markers=markers,
                                activelink="list-markers")
+
+@genotypesbp.route(
+    "/<int:species_id>/populations/<int:population_id>/genotypes/datasets/"
+    "<int:dataset_id>/view",
+    methods=["GET"])
+@require_login
+def view_dataset(species_id: int, population_id: int, dataset_id: int):
+    """View details regarding a specific dataset."""
+    return (f"Genotype dataset '{dataset_id}, from population '{population_id}' "
+            f"of species '{species_id}'.")