Instead of redirecting to /runs, show the home page with stats and README. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
"""
|
|
Home and root routes for L1 server.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
import markdown
|
|
from fastapi import APIRouter, Request, Depends
|
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
|
|
from artdag_common import render
|
|
from artdag_common.middleware import wants_html
|
|
|
|
from ..dependencies import get_templates, get_current_user
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/")
|
|
async def home(request: Request):
|
|
"""
|
|
Home page - show README and stats.
|
|
"""
|
|
user = await get_current_user(request)
|
|
|
|
# Load README
|
|
readme_html = ""
|
|
try:
|
|
readme_path = Path(__file__).parent.parent.parent / "README.md"
|
|
if readme_path.exists():
|
|
readme_html = markdown.markdown(readme_path.read_text())
|
|
except Exception:
|
|
pass
|
|
|
|
templates = get_templates(request)
|
|
return render(templates, "home.html", request,
|
|
user=user,
|
|
readme_html=readme_html,
|
|
stats={},
|
|
active_tab="home",
|
|
)
|
|
|
|
|
|
@router.get("/login")
|
|
async def login_redirect(request: Request):
|
|
"""
|
|
Redirect to L2 for login.
|
|
"""
|
|
from ..config import settings
|
|
|
|
if settings.l2_server:
|
|
# Redirect to L2 login with return URL
|
|
return_url = str(request.url_for("auth_callback"))
|
|
login_url = f"{settings.l2_server}/login?return_to={return_url}"
|
|
return RedirectResponse(url=login_url, status_code=302)
|
|
|
|
# No L2 configured - show error
|
|
return HTMLResponse(
|
|
"<html><body><h1>Login not configured</h1>"
|
|
"<p>No L2 server configured for authentication.</p></body></html>",
|
|
status_code=503
|
|
)
|