53 lines
1.1 KiB
Python
53 lines
1.1 KiB
Python
|
import importlib
|
||
|
import os
|
||
|
import traceback
|
||
|
|
||
|
import matplotlib
|
||
|
from apiflask import APIBlueprint, APIFlask
|
||
|
from flask_cors import CORS
|
||
|
|
||
|
matplotlib.use("agg")
|
||
|
|
||
|
cors = CORS()
|
||
|
api_bp = APIBlueprint("api", __name__, url_prefix="/api/v1")
|
||
|
dataset_path: str | None = None
|
||
|
|
||
|
|
||
|
class Config:
|
||
|
SECRET_KEY = "secret!"
|
||
|
SEND_FILE_MAX_AGE_DEFAULT = -1
|
||
|
|
||
|
|
||
|
def create_app():
|
||
|
global dataset_path
|
||
|
|
||
|
# Create and configure app
|
||
|
app = APIFlask(
|
||
|
"MAI Service",
|
||
|
title="MAI Service API",
|
||
|
docs_path="/",
|
||
|
version="1.0",
|
||
|
static_folder="",
|
||
|
template_folder="",
|
||
|
)
|
||
|
app.config.from_object(Config)
|
||
|
|
||
|
dataset_path = os.path.join(app.instance_path, "dataset")
|
||
|
os.makedirs(dataset_path, exist_ok=True)
|
||
|
|
||
|
@app.errorhandler(Exception)
|
||
|
def my_error_processor(error):
|
||
|
traceback.print_exception(error)
|
||
|
return {"message": str(error), "detail": "No details"}, 500
|
||
|
|
||
|
# Import custom REST methods
|
||
|
importlib.import_module("backend.api")
|
||
|
|
||
|
# Enable REST API
|
||
|
app.register_blueprint(api_bp)
|
||
|
|
||
|
# Enable app extensions
|
||
|
cors.init_app(app)
|
||
|
|
||
|
return app
|