#!/usr/bin/env python3 import os import sentry_sdk from sentry_sdk.integrations.flask import FlaskIntegration from flask import Flask from werkzeug.middleware.proxy_fix import ProxyFix # import stuff from model import db from utils import register_all_error_handlers, storage # import views from views import ModelView # Setup sentry SENTRY_DSN = os.environ.get("SENTRY_DSN") if SENTRY_DSN: sentry_sdk.init( dsn=SENTRY_DSN, integrations=[FlaskIntegration()], send_default_pii=True, release=os.environ.get('RELEASE_ID', 'test'), environment=os.environ.get('RELEASEMODE', 'dev') ) # create flask app app = Flask(__name__) app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1) # configure flask app app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URI', "sqlite://") # Default to memory db app.config['MINIO_ENDPOINT'] = os.environ['MINIO_ENDPOINT'] app.config['MINIO_ACCESS_KEY'] = os.environ['MINIO_ACCESS_KEY'] app.config['MINIO_SECRET_KEY'] = os.environ['MINIO_SECRET_KEY'] app.config['MINIO_MODEL_BUCKET_NAME'] = os.environ['MINIO_MODEL_BUCKET_NAME'] app.config['MINIO_MEANS_BUCKET_NAME'] = os.environ['MINIO_MEANS_BUCKET_NAME'] # important stuff app.secret_key = os.environ.get('SECRET_KEY', os.urandom(12)) # disable this for better performance app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # initialize stuff db.init_app(app) storage.init_app(app) with app.app_context(): db.create_all() # register error handlers register_all_error_handlers(app) # register views for view in [ModelView]: view.register(app, trailing_slash=False) # start debuggig if needed if __name__ == "__main__": app.run(debug=True)