fids/auth-domain/user-manager/src/__init__.py

65 lines
1.5 KiB
Python

import logging
import logging.config
import os
import sys
from flask import Flask, request
from flask_bcrypt import Bcrypt
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
cors = CORS()
bcrypt = Bcrypt()
logging_config = {
"version": 1,
"formatters": {
"json": {
"class": "pythonjsonlogger.jsonlogger.JsonFormatter",
"format": "%(asctime)s %(process)s %(levelname)s",
}
},
"handlers": {
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "json",
"stream": sys.stderr,
}
},
"root": {"level": "DEBUG", "handlers": ["console"], "propagate": True},
}
logging.config.dictConfig(logging_config)
logger = logging.getLogger(__name__)
def create_app(script_info=None):
app = Flask(__name__)
app_settings = os.getenv("APP_SETTINGS")
app.config.from_object(app_settings)
db.init_app(app)
cors.init_app(app, resources={r"*": {"origins": "*"}})
from src.api import api
api.init_app(app)
@app.shell_context_processor
def ctx():
return {"app": app, "db": db}
@app.after_request
def log_info(response):
logging_dict = {}
logging_dict["request"] = {"path": request.path, "status": request.method}
logging_dict["response"] = {"status": response.status}
logging_dict["X-API-REQUEST-ID"] = request.headers.get("x-api-request-id")
logger.info(logging_dict)
return response
return app