openflexure-microscope-server/openflexure_microscope/common/flask_labthings/quick.py
2020-01-06 15:09:29 +00:00

41 lines
1,015 B
Python

from flask import Flask
from flask_cors import CORS
from .labthing import LabThing
from .exceptions import JSONExceptionHandler
def create_app(
import_name,
prefix: str = "",
title: str = "",
description: str = "",
version: str = "0.0.0",
handle_errors: bool = True,
handle_cors: bool = True,
flask_kwargs: dict = {},
):
app = Flask(import_name, **flask_kwargs)
app.url_map.strict_slashes = False
# Handle CORS
if handle_cors:
cors_handler = CORS(app, resources=r"{prefix}/*")
# Handle errors
if handle_errors:
error_handler = JSONExceptionHandler()
error_handler.init_app(app)
# Create a LabThing
labthing = LabThing(
app, prefix=prefix, title=title, description=description, version=version
)
# Store references to added-in handlers
if cors_handler:
labthing.handlers["cors"] = cors_handler
if error_handler:
labthing.handlers["error"] = error_handler
return app, labthing