aboutsummaryrefslogtreecommitdiff
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: