25 lines
854 B
Python
25 lines
854 B
Python
# retoor <retoor@molodetz.nl>
|
|
from fastapi import APIRouter, Request
|
|
|
|
from molodetz.constants import SOFT_DELETE_TABLES
|
|
from molodetz.database import all_posts, count_deleted, count_open_join_requests, count_users
|
|
from molodetz.responses import respond
|
|
from molodetz.routers.admin._shared import admin_seo
|
|
from molodetz.schemas.admin import AdminIndexOut
|
|
from molodetz.utils.auth import require_admin
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("")
|
|
async def admin_index(request: Request):
|
|
require_admin(request)
|
|
ctx = {
|
|
"post_count": len(all_posts()),
|
|
"open_joins": count_open_join_requests(),
|
|
"user_count": count_users(),
|
|
"deleted_count": sum(count_deleted(name) for name in SOFT_DELETE_TABLES),
|
|
"seo": admin_seo(request, "Admin"),
|
|
}
|
|
return respond(request, "admin/index.html", ctx, model=AdminIndexOut)
|