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 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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user