# retoor from fastapi import APIRouter, Request from molodetz.database import count_media from molodetz.gallery import missing_sources, sync_gallery from molodetz.responses import action_result, respond from molodetz.routers.admin._shared import admin_seo from molodetz.schemas.admin import GalleryStatusOut from molodetz.utils.audit import record from molodetz.utils.auth import require_admin router = APIRouter() def _status(): return { "flyers": count_media("flyer"), "memes": count_media("meme"), "missing": missing_sources(), } @router.get("/gallery") async def gallery_status(request: Request): require_admin(request) ctx = dict(_status()) ctx["seo"] = admin_seo(request, "Gallery") return respond(request, "admin/gallery.html", ctx, model=GalleryStatusOut) @router.post("/gallery/resync") async def gallery_resync(request: Request): user = require_admin(request) synced = sync_gallery() data = dict(_status()) data["synced"] = synced record(request, "gallery.resync", payload=data, user=user) return action_result(request, "/admin/gallery", data=data)