06/16 Phase 6 (continue)

This commit is contained in:
2026-06-17 17:06:43 -04:00
parent 479afde2fa
commit 68a842d6b6
26 changed files with 1027 additions and 61 deletions
+21 -1
View File
@@ -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():