aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-07-31 10:04:16 -0500
committerFrederick Muriuki Muriithi2025-07-31 10:24:19 -0500
commitea48cd7048854a10c2a305f9d00106077ed317a1 (patch)
tree0f2d6034d9ccea36343d33bf347546c1a92aba51
parent1f3e3dc7fc03048e046911ead611afd2d6e1146f (diff)
downloadgn-auth-ea48cd7048854a10c2a305f9d00106077ed317a1.tar.gz
Add function to retrieve inbredset-group data.
-rw-r--r--gn_auth/auth/authorisation/resources/inbredset/models.py18
-rw-r--r--gn_auth/auth/authorisation/resources/models.py4
2 files changed, 21 insertions, 1 deletions
diff --git a/gn_auth/auth/authorisation/resources/inbredset/models.py b/gn_auth/auth/authorisation/resources/inbredset/models.py
index 64d41e3..3bc65d2 100644
--- a/gn_auth/auth/authorisation/resources/inbredset/models.py
+++ b/gn_auth/auth/authorisation/resources/inbredset/models.py
@@ -1,8 +1,10 @@
"""Functions to handle the low-level details regarding populations auth."""
from uuid import UUID, uuid4
+from typing import Sequence, Optional
import sqlite3
+import gn_auth.auth.db.sqlite3 as db
from gn_auth.auth.errors import NotFoundError
from gn_auth.auth.authentication.users import User
from gn_auth.auth.authorisation.resources.groups.models import Group
@@ -94,3 +96,19 @@ def link_data_to_resource(# pylint: disable=[too-many-arguments, too-many-positi
"VALUES (:resource_id, :data_link_id)",
params)
return params
+
+
+def resource_data(
+ cursor: db.DbCursor,
+ resource_id: UUID,
+ offset: int = 0,
+ limit: Optional[int] = None) -> Sequence[sqlite3.Row]:
+ """Fetch data linked to a inbred-set resource"""
+ cursor.execute(
+ ("SELECT * FROM inbredset_group_resources AS igr "
+ "INNER JOIN linked_inbredset_groups AS lig "
+ "ON igr.data_link_id=lig.data_link_id "
+ "WHERE igr.resource_id=?") + (
+ f" LIMIT {limit} OFFSET {offset}" if bool(limit) else ""),
+ (str(resource_id),))
+ return cursor.fetchall()
diff --git a/gn_auth/auth/authorisation/resources/models.py b/gn_auth/auth/authorisation/resources/models.py
index 0de286b..31371fd 100644
--- a/gn_auth/auth/authorisation/resources/models.py
+++ b/gn_auth/auth/authorisation/resources/models.py
@@ -18,6 +18,7 @@ from .checks import authorised_for, authorised_for_spec
from .base import Resource, ResourceCategory, resource_from_dbrow
from .common import assign_resource_owner_role, grant_access_to_sysadmins
from .groups.models import Group, is_group_leader
+from .inbredset.models import resource_data as inbredset_resource_data
from .mrna import (
resource_data as mrna_resource_data,
attach_resources_data as mrna_attach_resources_data,
@@ -177,7 +178,8 @@ def resource_data(conn, resource, offset: int = 0, limit: Optional[int] = None)
"genotype-metadata": lambda *args: tuple(),
"mrna-metadata": lambda *args: tuple(),
"system": lambda *args: tuple(),
- "group": lambda *args: tuple()
+ "group": lambda *args: tuple(),
+ "inbredset-group": inbredset_resource_data,
}
with db.cursor(conn) as cursor:
return tuple(