from __future__ import annotations #from quart import Blueprint, g from quart import ( Blueprint, redirect, url_for, ) from shared.browser.app.redis_cacher import clear_all_cache from shared.browser.app.authz import require_admin from shared.browser.app.utils.htmx import is_htmx_request from shared.sx.helpers import sx_response from shared.config import config from datetime import datetime def register(url_prefix): bp = Blueprint("settings", __name__, url_prefix = url_prefix) @bp.context_processor async def inject_root(): return { "base_title": f"{config()['title']} settings", } @bp.post("/cache_clear/") @require_admin async def cache_clear(): await clear_all_cache() if is_htmx_request(): now = datetime.now() from shared.sx.jinja_bridge import render as render_comp html = render_comp("cache-cleared", time_str=now.strftime("%H:%M:%S")) return sx_response(html) return redirect(url_for("defpage_cache_page")) return bp