From b2fa2121dd8cfb5be1505d1d46b3917e2312e7b5 Mon Sep 17 00:00:00 2001 From: Forrest Collman Date: Fri, 12 May 2023 12:39:35 -0700 Subject: [PATCH 1/3] removing unused import --- emannotationschemas/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emannotationschemas/app.py b/emannotationschemas/app.py index 37b3570..9747a92 100644 --- a/emannotationschemas/app.py +++ b/emannotationschemas/app.py @@ -1,6 +1,6 @@ import logging -from flask import Blueprint, Flask, jsonify, redirect, url_for +from flask import Blueprint, Flask, jsonify, redirect from flask_restx import Api from emannotationschemas.blueprint_app import api_bp From 030d58323c26e7fefd5970042207280b24054ecc Mon Sep 17 00:00:00 2001 From: Forrest Collman Date: Fri, 12 May 2023 12:40:27 -0700 Subject: [PATCH 2/3] adding schema types endpoint --- emannotationschemas/blueprint_app.py | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/emannotationschemas/blueprint_app.py b/emannotationschemas/blueprint_app.py index df1df1d..43d52c0 100644 --- a/emannotationschemas/blueprint_app.py +++ b/emannotationschemas/blueprint_app.py @@ -1,5 +1,5 @@ from flask import abort -from flask_restx import Namespace, Resource +from flask_restx import Namespace, Resource, reqparse from marshmallow_jsonschema import JSONSchema from emannotationschemas import get_schema, get_types @@ -25,6 +25,14 @@ def get(self): return get_types() +def get_type_schemas(): + types = get_types() + type_schemas = {} + for type in types: + type_schemas[type] = get_type_schema(type) + return type_schemas + + def get_type_schema(annotation_type): try: Schema = get_schema(annotation_type) @@ -39,3 +47,22 @@ class SchemaAnnotationType(Resource): @api_bp.doc("get_annotation_type", security="apikey") def get(self, annotation_type: str): return get_type_schema(annotation_type) + + +schema_parser = reqparse.RequestParser() +schema_parser.add_argument( + "schema_names", type=str, action="split", help="list of schema names" +) + + +@api_bp.expect(schema_parser) +@api_bp.route("/type/schemas") +class SchemaAnnotationTypes(Resource): + @api_bp.doc("get_annotation_types", security="apikey") + def get(self): + args = schema_parser.parse_args() + schema_names = args.get("schema_names", None) + if schema_names is not None: + return {name: get_type_schema(name) for name in schema_names} + else: + return get_type_schemas() From 9eb984d0607d6698e9eff4a3d239d20f6fd2f1c6 Mon Sep 17 00:00:00 2001 From: Forrest Collman Date: Mon, 24 Jul 2023 10:07:57 -0700 Subject: [PATCH 3/3] adding cors --- emannotationschemas/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emannotationschemas/app.py b/emannotationschemas/app.py index 9747a92..ce297eb 100644 --- a/emannotationschemas/app.py +++ b/emannotationschemas/app.py @@ -2,7 +2,7 @@ from flask import Blueprint, Flask, jsonify, redirect from flask_restx import Api - +from flask_cors import CORS from emannotationschemas.blueprint_app import api_bp from emannotationschemas.config import configure_app from emannotationschemas.utils import get_instance_folder_path @@ -20,7 +20,7 @@ def create_app(test_config=None): static_url_path="/schema/static", instance_relative_config=True, ) - + CORS(app, expose_headers="WWW-Authenticate") logging.basicConfig(level=logging.DEBUG) # load configuration (from test_config if passed)