24 lines
880 B
Python
24 lines
880 B
Python
|
|
from datetime import datetime, timezone
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from fastapi import APIRouter, Depends, Request
|
||
|
|
from fastapi.responses import HTMLResponse
|
||
|
|
from jinja2 import Environment, FileSystemLoader
|
||
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||
|
|
|
||
|
|
from haunt_fm.api.status import status as get_status_data
|
||
|
|
from haunt_fm.db import get_session
|
||
|
|
|
||
|
|
router = APIRouter()
|
||
|
|
|
||
|
|
_template_dir = Path(__file__).parent.parent / "templates"
|
||
|
|
_jinja_env = Environment(loader=FileSystemLoader(str(_template_dir)), autoescape=True)
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/", response_class=HTMLResponse)
|
||
|
|
async def status_page(request: Request, session: AsyncSession = Depends(get_session)):
|
||
|
|
data = await get_status_data(session)
|
||
|
|
template = _jinja_env.get_template("status.html")
|
||
|
|
html = template.render(data=data, now=datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M UTC"))
|
||
|
|
return HTMLResponse(html)
|