system-pri/backend/app/__init__.py

46 lines
1.1 KiB
Python
Raw Normal View History

2022-05-15 21:20:05 +02:00
import os
2022-06-06 21:30:30 +02:00
from apiflask import APIFlask
2022-05-15 21:20:05 +02:00
from flask_migrate import Migrate
2022-05-17 16:33:34 +02:00
from flask_cors import CORS
2022-05-15 21:20:05 +02:00
from .config import config
from .dependencies import db, ma
from .commands.startapp import startapp
from .commands.init_db import init_db
2022-05-15 21:20:05 +02:00
from .utils import import_models
from .api import api_bp
2022-06-06 21:30:30 +02:00
from .errors import request_entity_too_large, register_error_handlers
2022-05-15 21:20:05 +02:00
2022-06-06 21:30:30 +02:00
def create_app(config_name: str = None) -> APIFlask:
2022-05-15 21:20:05 +02:00
if config_name is None:
config_name = os.environ.get("FLASK_ENV")
2022-06-06 21:30:30 +02:00
app = APIFlask(__name__, docs_path='/')
2022-05-15 21:20:05 +02:00
app.config.from_object(config.get(config_name) or config.get("development"))
2022-05-17 16:33:34 +02:00
if app.config['ENABLE_CORS']:
CORS(app)
2022-05-15 21:20:05 +02:00
db.init_app(app)
ma.init_app(app)
if config_name != "production":
with app.app_context():
import_models()
Migrate(app, db)
app.register_blueprint(api_bp)
2022-05-15 21:20:05 +02:00
# register commands
app.cli.add_command(startapp)
app.cli.add_command(init_db)
2022-05-15 21:20:05 +02:00
# register errors
2022-06-06 21:30:30 +02:00
register_error_handlers(app)
# app.register_error_handler(413, request_entity_too_large)
2022-05-15 21:20:05 +02:00
return app