# retoor from fastapi import APIRouter, Request from molodetz.database import get_join_request, list_join_requests, update_join_request from molodetz.dependencies import json_or_form from molodetz.link_check import check_repo_link from molodetz.models import JoinStatusForm from molodetz.responses import action_result, respond from molodetz.routers.admin._shared import admin_seo from molodetz.schemas.joins import JoinListOut from molodetz.utils.audit import record from molodetz.utils.auth import not_found, require_admin router = APIRouter() @router.get("/joins") async def joins_index(request: Request): require_admin(request) return respond(request, "admin/joins.html", {"requests": list_join_requests(), "seo": admin_seo(request, "Aanmeldingen")}, model=JoinListOut) @router.post("/joins/{uid}/status") async def joins_status(request: Request, uid: str): user = require_admin(request) row = get_join_request(uid) if row is None: not_found("Aanmelding niet gevonden") data = await json_or_form(request, JoinStatusForm) update_join_request(uid, status=data.status) record(request, "join.request.status", payload={"status": data.status}, targets=[("join_request", uid)], user=user) return action_result(request, "/admin/joins", data={"uid": uid, "status": data.status}) @router.post("/joins/{uid}/check") async def joins_check(request: Request, uid: str): user = require_admin(request) row = get_join_request(uid) if row is None: not_found("Aanmelding niet gevonden") result = await check_repo_link(row) record(request, "join.request.check", payload=result, targets=[("join_request", uid)], user=user) return action_result(request, "/admin/joins", data=result)