73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
# main.py
|
|
|
|
import eventlet
|
|
|
|
eventlet.monkey_patch()
|
|
|
|
import sys
|
|
import os
|
|
import logging
|
|
from flask import Flask
|
|
from flask_socketio import SocketIO
|
|
|
|
# sys.path.append(os.path.dirname(__file__))
|
|
|
|
from app.di_container import Container
|
|
from app.configs import Config, LoggerConfig
|
|
from app.blueprints import (
|
|
auth_blueprint,
|
|
user_blueprint,
|
|
quiz_bp,
|
|
default_blueprint,
|
|
history_blueprint,
|
|
subject_blueprint,
|
|
session_bp,
|
|
)
|
|
from app.database import init_db
|
|
|
|
|
|
socketio = SocketIO(cors_allowed_origins="*")
|
|
|
|
|
|
def createApp() -> Flask:
|
|
app = Flask(__name__)
|
|
app.config.from_object(Config)
|
|
LoggerConfig.init_logger(app)
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
|
|
)
|
|
|
|
container = Container()
|
|
app.container = container
|
|
|
|
mongo = init_db(app)
|
|
if mongo is not None:
|
|
container.mongo.override(mongo)
|
|
container.socketio.override(socketio)
|
|
|
|
container.socket_controller()
|
|
|
|
socketio.init_app(app)
|
|
|
|
container.wire(
|
|
modules=[
|
|
"app.blueprints.auth",
|
|
"app.blueprints.user",
|
|
"app.blueprints.quiz",
|
|
"app.blueprints.history",
|
|
"app.blueprints.subject",
|
|
"app.blueprints.session",
|
|
]
|
|
)
|
|
|
|
app.register_blueprint(default_blueprint)
|
|
app.register_blueprint(auth_blueprint, url_prefix="/api")
|
|
app.register_blueprint(user_blueprint, url_prefix="/api")
|
|
app.register_blueprint(quiz_bp, url_prefix="/api/quiz")
|
|
app.register_blueprint(history_blueprint, url_prefix="/api/history")
|
|
app.register_blueprint(subject_blueprint, url_prefix="/api/subject")
|
|
app.register_blueprint(session_bp, url_prefix="/api/session")
|
|
|
|
return app
|