From c6addbf63c93ea778a91d7ee65eea3b0ec4fa276 Mon Sep 17 00:00:00 2001
From: Dan Jones <danjon@noc.ac.uk>
Date: Thu, 22 Aug 2024 09:43:20 +0100
Subject: [PATCH] fix: remove definitions from raw schema

This is a workaround until a new version of Flasgger
is released.
---
 generate_schema_config.py | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/generate_schema_config.py b/generate_schema_config.py
index a7bc202..35a19de 100644
--- a/generate_schema_config.py
+++ b/generate_schema_config.py
@@ -114,10 +114,30 @@ def serve():
     """
     Run as local flask app on port 5000
     """
+    # Replace schema route to remove invalid 
+    # definitions: {}
+    # Should be fixed if Flassger 0.9.7 is released
+    # 
+    # The last release of flasgger was Aug 2020 
+    # This bug was fixed in Nov 2021 
+    # There is a pre-release from May 2023
+    # Until the fix gets released we have to 
+    # remove the invalid definitions object 
+    # from the spec
     app = Flask(__name__)
     Swagger(app, config=swagger_config, merge=True)
     
-    app.run(debug=False, host=FLASK_HOST, port=FLASK_PORT)
+    @app.after_request
+    def after_request_decorator(response):
+        if type(response).__name__ == 'Response':
+            if response.content_type == 'application/json':
+                data = response.json
+                if 'definitions' in data: 
+                    del data['definitions']
+                response.data = json.dumps(data)
+
+        return response
+    app.run(debug=True, host=FLASK_HOST, port=FLASK_PORT)
 
 
 def compile_schema(swagger_config):
@@ -136,13 +156,6 @@ def compile_schema(swagger_config):
     client = app.test_client()
     response = client.get(route)
     spec = response.json
-    # The last release of flasgger was Aug 2020 
-    # This bug was fixed in Nov 2021 
-    # There is a pre-release from May 2023
-    # Until the fix gets released we have to 
-    # remove the invalid definitions object 
-    # from the spec
-    del spec['definitions']
     return spec
 
 
-- 
GitLab