40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from fastapi import APIRouter, Request
|
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from core.data_processor import get_upcoming_events, get_remarks, invalidate_cache
|
|
from core.config_loader import config
|
|
from pathlib import Path
|
|
|
|
router = APIRouter()
|
|
BASE_DIR = Path(__file__).parent.parent
|
|
templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
|
|
|
|
@router.get("/zeiten", response_class=HTMLResponse)
|
|
async def public_table(request: Request, days: int = None, lines: int = None, test: bool = False):
|
|
# Wenn nichts angegeben wurde, greift der Standard aus der Config
|
|
if not days and not lines:
|
|
days = config['processing']['days_to_show']
|
|
|
|
events = get_upcoming_events(days_to_show=days, limit=lines)
|
|
remarks = get_remarks()
|
|
|
|
# Template 'zeiten.html' laden und 'test' Parameter durchreichen
|
|
return templates.TemplateResponse("zeiten.html", {
|
|
"request": request,
|
|
"events": events,
|
|
"remarks": remarks,
|
|
"test": test
|
|
})
|
|
|
|
@router.get("/", response_class=HTMLResponse)
|
|
async def admin_page(request: Request):
|
|
return templates.TemplateResponse("admin.html", {
|
|
"request": request,
|
|
"links": config['links'],
|
|
"config_days": config['processing']['days_to_show']
|
|
})
|
|
|
|
@router.get("/cache-clear")
|
|
async def clear_cache():
|
|
invalidate_cache()
|
|
return RedirectResponse(url="/") |