From c799a1bbc05f759644caecbb769defd8aebf867d Mon Sep 17 00:00:00 2001 From: Roger Joys Date: Tue, 14 Apr 2026 15:23:59 -0700 Subject: [PATCH] Fix Jinja2 cache bug - replace all TemplateResponse calls with template.render() bypass --- app/main.py | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) mode change 100755 => 100644 app/main.py diff --git a/app/main.py b/app/main.py old mode 100755 new mode 100644 index d62418a..84d3234 --- a/app/main.py +++ b/app/main.py @@ -27,10 +27,17 @@ state_store: dict[str, dict] = {} @app.get("/", response_class=HTMLResponse) async def index(request: Request): """Entry point — shown when no site/mac params are present.""" - return templates.TemplateResponse("error.html", { - "request": request, - "message": "No guest session found. Please connect to the guest WiFi first." - }) + try: + template = templates.env.get_template("error.html") + html = template.render( + request=request, + message="No guest session found. Please connect to the guest WiFi first.", + detail="Please try reconnecting to the guest WiFi or ask for assistance." + ) + return HTMLResponse(html) + except Exception as e: + logger.error("Index template error: %s", str(e)) + return HTMLResponse("

No guest session found. Please connect to the guest WiFi first.

") @app.get("/portal") @@ -72,12 +79,20 @@ async def unifi_portal(request: Request, site_id: str, ap: str = "", id: str = " auth_url = get_authorization_url(config, state) return RedirectResponse(auth_url) + @app.get("/enroll-success", response_class=HTMLResponse) async def enroll_success(request: Request, username: str = ""): - return templates.TemplateResponse("enroll-success.html", { - "request": request, - "username": username, - }) + try: + template = templates.env.get_template("enroll-success.html") + html = template.render( + request=request, + username=username, + ) + return HTMLResponse(html) + except Exception as e: + logger.error("Enroll success template error: %s", str(e)) + return HTMLResponse("

Enrollment successful.

") + @app.get("/callback") async def callback(request: Request, code: str, state: str): @@ -109,11 +124,16 @@ async def callback(request: Request, code: str, state: str): set_guest_name(site, mac, userinfo.get("preferred_username", "Guest"), user_agent) if not success: - return templates.TemplateResponse("error.html", { - "request": request, - "message": "Failed to authorize your device. Please try again or ask for help." - }) - + try: + template = templates.env.get_template("error.html") + html = template.render( + request=request, + message="Failed to authorize your device. Please try again or ask for help." + ) + return HTMLResponse(html) + except Exception as e: + logger.error("Error template error: %s", str(e)) + return HTMLResponse("

Failed to authorize your device. Please try again or ask for help.

") try: template = templates.env.get_template("success.html") @@ -129,4 +149,3 @@ async def callback(request: Request, code: str, state: str): except Exception as e: logger.error("Success template error: %s", str(e)) return RedirectResponse(original_url or "http://captive.apple.com/hotspot-detect.html") -