about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-04-19 14:42:31 +0300
committerFrederick Muriuki Muriithi2023-04-19 15:13:04 +0300
commit9a0c6fd1759e13fa7a934852f87e9aa4c62d7dfd (patch)
treeb21dd6bfa8896332d848992cb32e2119cc6d9c4f
parent85610fc9670c0496bff045be0e148e3d2b3357d3 (diff)
downloadgenenetwork3-9a0c6fd1759e13fa7a934852f87e9aa4c62d7dfd.tar.gz
auth: Setup selected traits correctly
Fix bugs with setting up of the selected traits for use while filtering the
search results.
-rw-r--r--gn3/auth/authorisation/data/phenotypes.py2
-rw-r--r--gn3/auth/authorisation/data/views.py2
-rw-r--r--scripts/search_phenotypes.py15
3 files changed, 11 insertions, 8 deletions
diff --git a/gn3/auth/authorisation/data/phenotypes.py b/gn3/auth/authorisation/data/phenotypes.py
index 3ba478a..db16699 100644
--- a/gn3/auth/authorisation/data/phenotypes.py
+++ b/gn3/auth/authorisation/data/phenotypes.py
@@ -17,6 +17,8 @@ def linked_phenotype_data(
         authcursor.execute("SELECT * FROM linked_phenotype_data")
         linked = tuple(tuple(row[key] for key in authkeys)
                        for row in authcursor.fetchall())
+        if len(linked) <= 0:
+            return (item for item in tuple())
         paramstr = "".join(["(%s, %s, %s, %s)"] * len(linked))
         query = (
             "SELECT spc.SpeciesId, spc.SpeciesName, iset.InbredSetId, "
diff --git a/gn3/auth/authorisation/data/views.py b/gn3/auth/authorisation/data/views.py
index a14e78b..a9861d2 100644
--- a/gn3/auth/authorisation/data/views.py
+++ b/gn3/auth/authorisation/data/views.py
@@ -163,7 +163,7 @@ def __search_phenotypes__():
             f"--gn3-db-uri={app.config['SQL_URI']}",
             f"--redis-uri={redisuri}",
             f"--per-page={__request_key__('per_page')}"] +(
-                [f"--selected='{json.dumps(selected)}"]
+                [f"--selected={json.dumps(selected)}"]
                 if len(selected) > 0 else [])
         jobs.create_job(redisconn, {
             "job_id": job_id, "command": command, "status": "queued",
diff --git a/scripts/search_phenotypes.py b/scripts/search_phenotypes.py
index 7049834..2f7fcf3 100644
--- a/scripts/search_phenotypes.py
+++ b/scripts/search_phenotypes.py
@@ -11,6 +11,7 @@ from datetime import datetime, timedelta
 import click
 import redis
 import requests
+from MySQLdb.cursors import DictCursor
 
 from gn3 import jobs
 from gn3.auth import db as authdb
@@ -92,13 +93,13 @@ def search(# pylint: disable=[too-many-arguments, too-many-locals]
         try:
             search_query = f"species:{species}" + (
                 f" AND ({query})" if bool(query) else "")
-            filter_keys = ("SpeciesName", "InbredSetName", "dataset_name",
-                           "PublishXRefId")
-            selected_traits = tuple(tuple(item[key] for key in filter_keys)
-                                    for item in json.loads(selected))
-            linked = tuple(tuple(row[key] for key in filter_keys)
-                           for row in linked_phenotype_data(
-                                   authconn, gn3conn, species))
+            selected_traits = tuple(
+                (item["species"], item["group"], item["dataset"], item["name"])
+                for item in json.loads(selected))
+            linked = tuple(
+                (row["SpeciesName"], row["InbredSetName"], row["dataset_name"],
+                 row["PublishXRefId"])
+                for row in linked_phenotype_data(authconn, gn3conn, species))
             page = 1
             count = 0
             while count < per_page: