about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-07-31 10:25:07 -0500
committerFrederick Muriuki Muriithi2025-07-31 10:29:38 -0500
commit471240cd5251b3f5d5bc9e45b2068eb4fe1036c6 (patch)
tree12b036c7414dd72009962dec9245b656cac1d8db
parentea48cd7048854a10c2a305f9d00106077ed317a1 (diff)
downloadgn-auth-471240cd5251b3f5d5bc9e45b2068eb4fe1036c6.tar.gz
Break circular dependency - move utility function to module of use.
-rw-r--r--gn_auth/auth/authorisation/resources/inbredset/models.py31
-rw-r--r--gn_auth/auth/authorisation/resources/inbredset/views.py46
2 files changed, 41 insertions, 36 deletions
diff --git a/gn_auth/auth/authorisation/resources/inbredset/models.py b/gn_auth/auth/authorisation/resources/inbredset/models.py
index 3bc65d2..2626f3e 100644
--- a/gn_auth/auth/authorisation/resources/inbredset/models.py
+++ b/gn_auth/auth/authorisation/resources/inbredset/models.py
@@ -5,37 +5,8 @@ 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
-from gn_auth.auth.authorisation.resources.base import Resource, ResourceCategory
-from gn_auth.auth.authorisation.resources.models import (
-    create_resource as _create_resource)
-
-def create_resource(
-        cursor: sqlite3.Cursor,
-        resource_name: str,
-        user: User,
-        group: Group,
-        public: bool
-) -> Resource:
-    """Convenience function to create a resource of type 'inbredset-group'."""
-    cursor.execute("SELECT * FROM resource_categories "
-                   "WHERE resource_category_key='inbredset-group'")
-    category = cursor.fetchone()
-    if category:
-        return _create_resource(cursor,
-                                resource_name,
-                                ResourceCategory(
-                                    resource_category_id=UUID(
-                                        category["resource_category_id"]),
-                                    resource_category_key="inbredset-group",
-                                    resource_category_description=category[
-                                        "resource_category_description"]),
-                                user,
-                                group,
-                                public)
-    raise NotFoundError("Could not find a 'inbredset-group' resource category.")
+from gn_auth.auth.authorisation.resources.base import Resource
 
 
 def assign_inbredset_group_owner_role(
diff --git a/gn_auth/auth/authorisation/resources/inbredset/views.py b/gn_auth/auth/authorisation/resources/inbredset/views.py
index 40dd38d..9603b5b 100644
--- a/gn_auth/auth/authorisation/resources/inbredset/views.py
+++ b/gn_auth/auth/authorisation/resources/inbredset/views.py
@@ -1,20 +1,54 @@
 """Views for InbredSet resources."""
+import uuid
+
 from pymonad.either import Left, Right, Either
 from flask import jsonify, Response, Blueprint, current_app as app
 
 
 from gn_auth.auth.db import sqlite3 as db
+from gn_auth.auth.errors import NotFoundError
 from gn_auth.auth.requests import request_json
-from gn_auth.auth.db.sqlite3 import with_db_connection
+from gn_auth.auth.authentication.users import User
 from gn_auth.auth.authentication.oauth2.resource_server import require_oauth
-from gn_auth.auth.authorisation.resources.groups.models import user_group, admin_group
-
-from .models import (create_resource,
-                     link_data_to_resource,
+from gn_auth.auth.authorisation.resources.base import Resource, ResourceCategory
+from gn_auth.auth.authorisation.resources.groups.models import (Group,
+                                                                user_group,
+                                                                admin_group)
+from gn_auth.auth.authorisation.resources.models import (
+    create_resource as _create_resource)
+
+from .models import (link_data_to_resource,
                      assign_inbredset_group_owner_role)
 
 popbp = Blueprint("populations", __name__)
 
+
+def create_resource(
+        cursor: db.DbCursor,
+        resource_name: str,
+        user: User,
+        group: Group,
+        public: bool
+) -> Resource:
+    """Convenience function to create a resource of type 'inbredset-group'."""
+    cursor.execute("SELECT * FROM resource_categories "
+                   "WHERE resource_category_key='inbredset-group'")
+    category = cursor.fetchone()
+    if category:
+        return _create_resource(cursor,
+                                resource_name,
+                                ResourceCategory(
+                                    resource_category_id=uuid.UUID(
+                                        category["resource_category_id"]),
+                                    resource_category_key="inbredset-group",
+                                    resource_category_description=category[
+                                        "resource_category_description"]),
+                                user,
+                                group,
+                                public)
+    raise NotFoundError("Could not find a 'inbredset-group' resource category.")
+
+
 @popbp.route("/populations/resource-id/<int:speciesid>/<int:inbredsetid>",
             methods=["GET"])
 def resource_id_by_inbredset_id(speciesid: int, inbredsetid: int) -> Response:
@@ -30,7 +64,7 @@ def resource_id_by_inbredset_id(speciesid: int, inbredsetid: int) -> Response:
                 (speciesid, inbredsetid))
             return cursor.fetchone()
 
-    res = with_db_connection(__res_by_iset_id__)
+    res = db.with_db_connection(__res_by_iset_id__)
     if res:
         resp = jsonify({"status": "success", "resource-id": res["resource_id"]})
     else: