06/16 Phase 6 (continue)
This commit is contained in:
+21
-1
@@ -1,8 +1,13 @@
|
||||
"""Application factory."""
|
||||
from flask import Flask, render_template
|
||||
from flask import Flask, render_template, request
|
||||
from flask_login import current_user
|
||||
from app.config import get_config
|
||||
from app.extensions import (db, migrate, login_manager, csrf, babel, limiter)
|
||||
|
||||
_MAINTENANCE_EXEMPT_ENDPOINTS = {
|
||||
"static", "main.healthz", "auth.login", "auth.logout", "payments.webhook",
|
||||
}
|
||||
|
||||
|
||||
def create_app(config_object=None):
|
||||
app = Flask(__name__)
|
||||
@@ -14,6 +19,7 @@ def create_app(config_object=None):
|
||||
_register_blueprints(app)
|
||||
_register_errorhandlers(app)
|
||||
_register_context(app)
|
||||
_register_hooks(app)
|
||||
_register_cli(app)
|
||||
|
||||
return app
|
||||
@@ -115,6 +121,20 @@ def _register_context(app):
|
||||
}
|
||||
|
||||
|
||||
def _register_hooks(app):
|
||||
@app.before_request
|
||||
def check_maintenance():
|
||||
from app.services.settings import get_setting
|
||||
if not get_setting("maintenance_mode", False):
|
||||
return None
|
||||
if current_user.is_authenticated and getattr(current_user, "is_admin", False):
|
||||
return None
|
||||
ep = request.endpoint or ""
|
||||
if ep in _MAINTENANCE_EXEMPT_ENDPOINTS or ep.startswith("admin."):
|
||||
return None
|
||||
return render_template("errors/maintenance.html"), 503
|
||||
|
||||
|
||||
def _register_cli(app):
|
||||
@app.cli.command("expire-listings")
|
||||
def expire_listings_cmd():
|
||||
|
||||
Reference in New Issue
Block a user