# SPDX-FileCopyrightText: WTF Kooperative eG # # SPDX-License-Identifier: AGPL-3.0-or-later import logging import os from dotenv import load_dotenv, find_dotenv from flask import Flask from flask_cors import CORS from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from ldap3.utils.log import set_library_log_detail_level, BASIC load_dotenv(find_dotenv()) app = Flask(__name__) # Configure logging loglevel = os.getenv("KI_LOGLEVEL", logging.WARNING) loglevel = int(loglevel) app.logger.setLevel(loglevel) app.logger.propagate = False # do not forward messages to the root logger logging.basicConfig(level=loglevel, format='[%(asctime)s] %(levelname)s [%(name)s] %(message)s') # configure root logger as fallback logging.getLogger('werkzeug').propagate = False # werkzeug has its own ColorStreamHandler set_library_log_detail_level(BASIC) # ldap3 has different verbosity levels internally app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI") app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False app.config["KI_DATA_DIR"] = os.path.dirname(__file__) + "/data" app.config["CORS_ORIGINS"] = os.getenv("CORS_ORIGINS", "*") app.config["KI_AUTH"] = os.getenv("KI_AUTH") app.config["KI_LDAP_URL"] = os.getenv("KI_LDAP_URL") app.config["KI_LDAP_AUTH_USER"] = os.getenv("KI_LDAP_AUTH_USER") app.config["KI_LDAP_AUTH_PASSWORD"] = os.getenv("KI_LDAP_AUTH_PASSWORD") app.config["KI_LDAP_BASE_DN"] = os.getenv("KI_LDAP_BASE_DN") CORS(app) db = SQLAlchemy(app) migrate = Migrate(app, db, compare_type=True) app.logger.info("Hello from KI") from ki import module # noqa