Fix Jinja2 template compatibility - convert settings to dict

This commit is contained in:
Z User 2026-03-24 05:37:08 +00:00
parent 615140d786
commit 6b4a2fa31e

View File

@ -7,7 +7,7 @@ import uuid
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Optional, List from typing import Optional, List
from fastapi import APIRouter, Request, Response, Cookie, Form, UploadFile, File, HTTPException, Depends from fastapi import APIRouter, Request, Response, Cookie, Form, UploadFile, File, HTTPException
from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse
from fastapi.templating import Jinja2Templates from fastapi.templating import Jinja2Templates
from pydantic import BaseModel from pydantic import BaseModel
@ -20,8 +20,17 @@ from core.orchestrator import Orchestrator
router = APIRouter() router = APIRouter()
# Templates # Templates - use string path for better compatibility
templates = Jinja2Templates(directory=Path(__file__).parent / "templates") templates = Jinja2Templates(directory=str(Path(__file__).parent / "templates"))
def get_template_settings():
"""Get settings as a simple dict for template compatibility."""
return {
"admin_path": settings.admin_path,
"host": settings.host,
"port": settings.port,
}
# ============================================================================ # ============================================================================
@ -76,7 +85,7 @@ async def landing_page(request: Request):
return templates.TemplateResponse( return templates.TemplateResponse(
"landing.html", "landing.html",
{"request": request, "settings": settings} {"request": request, "settings": get_template_settings()}
) )
@ -85,7 +94,7 @@ async def login_page(request: Request, error: Optional[str] = None):
"""Login page.""" """Login page."""
return templates.TemplateResponse( return templates.TemplateResponse(
"login.html", "login.html",
{"request": request, "settings": settings, "error": error} {"request": request, "settings": get_template_settings(), "error": error}
) )
@ -94,13 +103,13 @@ async def signup_page(request: Request, error: Optional[str] = None):
"""Signup page.""" """Signup page."""
return templates.TemplateResponse( return templates.TemplateResponse(
"signup.html", "signup.html",
{"request": request, "settings": settings, "error": error} {"request": request, "settings": get_template_settings(), "error": error}
) )
@router.post("/login") @router.post("/login")
async def login_submit( async def login_submit(
response: Response, request: Request,
username: str = Form(...), username: str = Form(...),
password: str = Form(...) password: str = Form(...)
): ):
@ -111,7 +120,7 @@ async def login_submit(
if not user: if not user:
return templates.TemplateResponse( return templates.TemplateResponse(
"login.html", "login.html",
{"request": {}, "settings": settings, "error": "Invalid username or password"}, {"request": request, "settings": get_template_settings(), "error": "Invalid username or password"},
status_code=401 status_code=401
) )
@ -143,14 +152,14 @@ async def signup_submit(
if password != confirm_password: if password != confirm_password:
return templates.TemplateResponse( return templates.TemplateResponse(
"signup.html", "signup.html",
{"request": request, "settings": settings, "error": "Passwords do not match"}, {"request": request, "settings": get_template_settings(), "error": "Passwords do not match"},
status_code=400 status_code=400
) )
if len(password) < 6: if len(password) < 6:
return templates.TemplateResponse( return templates.TemplateResponse(
"signup.html", "signup.html",
{"request": request, "settings": settings, "error": "Password must be at least 6 characters"}, {"request": request, "settings": get_template_settings(), "error": "Password must be at least 6 characters"},
status_code=400 status_code=400
) )
@ -160,7 +169,7 @@ async def signup_submit(
if not user: if not user:
return templates.TemplateResponse( return templates.TemplateResponse(
"signup.html", "signup.html",
{"request": request, "settings": settings, "error": "Username or email already exists"}, {"request": request, "settings": get_template_settings(), "error": "Username or email already exists"},
status_code=400 status_code=400
) )
@ -213,7 +222,7 @@ async def chat_page(request: Request, session_token: Optional[str] = Cookie(None
"chat.html", "chat.html",
{ {
"request": request, "request": request,
"settings": settings, "settings": get_template_settings(),
"user": user, "user": user,
"rate_info": rate_info "rate_info": rate_info
} }
@ -242,7 +251,7 @@ async def profile_page(request: Request, session_token: Optional[str] = Cookie(N
"profile.html", "profile.html",
{ {
"request": request, "request": request,
"settings": settings, "settings": get_template_settings(),
"user": user, "user": user,
"documents": documents, "documents": documents,
"rate_info": rate_info "rate_info": rate_info