From 963c226fa61f04efcb36e2a185d829594127c4b4 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 21 Aug 2023 09:53:00 +0300 Subject: Editing: Retrieve case attributes by the related InbredSet --- gn3/app.py | 2 ++ gn3/case_attributes.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 gn3/case_attributes.py diff --git a/gn3/app.py b/gn3/app.py index 2a11131..135796c 100644 --- a/gn3/app.py +++ b/gn3/app.py @@ -27,6 +27,7 @@ from gn3.api.search import search from gn3.api.metadata import metadata from gn3.api.sampledata import sampledata from gn3.auth import oauth2 +from gn3.case_attributes import caseattr def create_app(config: Union[Dict, str, None] = None) -> Flask: @@ -76,6 +77,7 @@ def create_app(config: Union[Dict, str, None] = None) -> Flask: app.register_blueprint(metadata, url_prefix="/api/metadata") app.register_blueprint(sampledata, url_prefix="/api/sampledata") app.register_blueprint(oauth2, url_prefix="/api/oauth2") + app.register_blueprint(caseattr, url_prefix="/api/case-attribute") register_error_handlers(app) return app diff --git a/gn3/case_attributes.py b/gn3/case_attributes.py new file mode 100644 index 0000000..590052a --- /dev/null +++ b/gn3/case_attributes.py @@ -0,0 +1,17 @@ +"""Implement case-attribute manipulations.""" +from MySQLdb.cursors import DictCursor +from flask import jsonify, Response, Blueprint, current_app + +from gn3.db_utils import database_connection + +caseattr = Blueprint("case-attribute", __name__) + +@caseattr.route("/", methods=["GET"]) +def inbredset_case_attributes(inbredset_id: int) -> Response: + """Retrieve ALL case-attributes for a specific InbredSet group.""" + with (database_connection(current_app.config["SQL_URI"]) as conn, + conn.cursor(cursorclass=DictCursor) as cursor): + cursor.execute( + "SELECT * FROM CaseAttribute WHERE InbredSetId=%(inbredset_id)s", + {"inbredset_id": inbredset_id}) + return jsonify(tuple(dict(row) for row in cursor.fetchall())) -- cgit 1.4.1