majuna/app/__init__.py

45 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.models.automation import Automation, AutomationState
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, {
'/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 sys.argv[1] != "db":
from app.metrics import DefinedProxiesCollector, BlockedProxiesCollector, AutomationCollector
REGISTRY.register(DefinedProxiesCollector())
REGISTRY.register(BlockedProxiesCollector())
REGISTRY.register(AutomationCollector())
@app.route('/')
def index() -> ResponseReturnValue:
return redirect(url_for("portal.portal_home"))
if __name__ == '__main__':
app.run()