majuna/app/__init__.py

44 lines
1.2 KiB
Python

from flask import Flask, redirect, url_for
from flask.typing import ResponseReturnValue
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from prometheus_client import make_wsgi_app, REGISTRY
import yaml
import sys
from app.extensions import db
from app.extensions import migrate
from app.extensions import bootstrap
from app.portal import portal
from app.tfstate import tfstate
app = Flask(__name__)
app.config.from_file("../config.yaml", load=yaml.safe_load)
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, { # type: ignore[assignment]
'/metrics': make_wsgi_app()
})
db.init_app(app)
migrate.init_app(app, db, render_as_batch=True)
bootstrap.init_app(app)
app.register_blueprint(portal, url_prefix="/portal")
app.register_blueprint(tfstate, url_prefix="/tfstate")
if 'nose' not in sys.modules.keys() and sys.argv[1] != "db":
from app.metrics import DefinedProxiesCollector, BlockedProxiesCollector, AutomationCollector
REGISTRY.register(DefinedProxiesCollector(app))
REGISTRY.register(BlockedProxiesCollector(app))
REGISTRY.register(AutomationCollector(app))
@app.route('/')
def index() -> ResponseReturnValue:
return redirect(url_for("portal.portal_home"))
if __name__ == '__main__':
app.run()