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 pathlib import Path
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.templating import Jinja2Templates
from pydantic import BaseModel
@ -20,8 +20,17 @@ from core.orchestrator import Orchestrator
router = APIRouter()
# Templates
templates = Jinja2Templates(directory=Path(__file__).parent / "templates")
# Templates - use string path for better compatibility
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(
"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."""
return templates.TemplateResponse(
"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."""
return templates.TemplateResponse(
"signup.html",
{"request": request, "settings": settings, "error": error}
{"request": request, "settings": get_template_settings(), "error": error}
)
@router.post("/login")
async def login_submit(
response: Response,
request: Request,
username: str = Form(...),
password: str = Form(...)
):
@ -111,7 +120,7 @@ async def login_submit(
if not user:
return templates.TemplateResponse(
"login.html",
{"request": {}, "settings": settings, "error": "Invalid username or password"},
{"request": request, "settings": get_template_settings(), "error": "Invalid username or password"},
status_code=401
)
@ -143,14 +152,14 @@ async def signup_submit(
if password != confirm_password:
return templates.TemplateResponse(
"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
)
if len(password) < 6:
return templates.TemplateResponse(
"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
)
@ -160,7 +169,7 @@ async def signup_submit(
if not user:
return templates.TemplateResponse(
"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
)
@ -213,7 +222,7 @@ async def chat_page(request: Request, session_token: Optional[str] = Cookie(None
"chat.html",
{
"request": request,
"settings": settings,
"settings": get_template_settings(),
"user": user,
"rate_info": rate_info
}
@ -242,7 +251,7 @@ async def profile_page(request: Request, session_token: Optional[str] = Cookie(N
"profile.html",
{
"request": request,
"settings": settings,
"settings": get_template_settings(),
"user": user,
"documents": documents,
"rate_info": rate_info