Fix Jinja2 template compatibility - convert settings to dict
This commit is contained in:
parent
615140d786
commit
6b4a2fa31e
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user