Files
eveAI/eveai_app/__init__.py
2024-04-29 13:18:34 +02:00

71 lines
1.9 KiB
Python

import logging
import os
from flask import Flask
from flask_security import SQLAlchemyUserDatastore
from flask_security.signals import user_authenticated
from werkzeug.middleware.proxy_fix import ProxyFix
import logging.config
from .extensions import db, migrate, bootstrap, security, mail, login_manager
from .models.user import User, Tenant, Role
from .models.document import Document, DocumentLanguage, DocumentVersion
from .logging_config import LOGGING
from .utils.security import set_tenant_session_data
def create_app(config_file=None):
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1)
if config_file is None:
app.config.from_object('config.DevConfig')
else:
app.config.from_object(config_file)
try:
os.makedirs(app.instance_path)
except OSError:
pass
logging.config.dictConfig(LOGGING)
register_extensions(app)
# Setup Flask-Security-Too
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security.init_app(app, user_datastore)
user_authenticated.connect(set_tenant_session_data, app)
# Register Blueprints
register_blueprints(app)
if app.config['DEBUG'] is True:
app.logger.setLevel(logging.DEBUG)
mail_logger = logging.getLogger('flask_mailman')
mail_logger.setLevel(logging.DEBUG)
security_logger = logging.getLogger('flask_security')
security_logger.setLevel(logging.DEBUG)
# Register API
register_api(app)
return app
def register_extensions(app):
db.init_app(app)
migrate.init_app(app, db)
bootstrap.init_app(app)
mail.init_app(app)
login_manager.init_app(app)
# Register Blueprints
def register_blueprints(app):
from .views.user_views import user_bp
app.register_blueprint(user_bp)
def register_api(app):
pass
# from . import api
# app.register_blueprint(api.bp, url_prefix='/api')