def create(test_config=None, mode="app"): arg_type = type(mode) assert isinstance(mode, str), f"Expected string, provided {arg_type}" assert mode in ("app", "celery"), f"Expected app/celery, provided {mode}" app = Flask(__name__) # Tell Flask that it should respect the X-Forwarded-For and X-Forwarded-Proto # headers coming from a proxy (if any). # On its own Flask's `url_for` is not very smart and if you're serving # traffic through an HTTPS proxy, `url_for` will create URLs with the HTTP # protocol. This is the cannonical solution. # https://werkzeug.palletsprojects.com/en/1.0.x/middleware/proxy_fix/ app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1) if shared_config["cors"]["allow_all"]: CORS(app, resources={r"/*": {"origins": "*"}}) else: CORS(app) app.iniconfig = ConfigIni() configure_flask(test_config, app, mode) if mode == "app": helpers.configure_flask_app_logging( app, shared_config["discprov"]["loglevel_flask"]) return app if mode == "celery": # log level is defined via command line in docker yml files helpers.configure_logging() configure_celery(app, celery_app.celery, test_config) return celery_app raise ValueError("Invalid mode")
def create(test_config=None, mode="app"): arg_type = type(mode) assert isinstance(mode, str), f"Expected string, provided {arg_type}" assert mode in ("app", "celery"), f"Expected app/celery, provided {mode}" app = Flask(__name__) if shared_config["cors"]["allow_all"]: CORS(app, resources={r"/*": {"origins": "*"}}) else: CORS(app) app.iniconfig = ConfigIni() configure_flask(test_config, app, mode) if mode == "app": helpers.configure_flask_app_logging(app, shared_config["discprov"]["loglevel_flask"]) return app if mode == "celery": # log level is defined via command line in docker yml files helpers.configure_logging() configure_celery(app, celery_app.celery, test_config) return celery_app raise ValueError("Invalid mode")