27 lines
998 B
Python
27 lines
998 B
Python
import asyncio
|
|
import logging
|
|
|
|
from fastapi import APIRouter, Depends, Request
|
|
|
|
from ..retention import ORIGIN_MANUAL, RetentionBusy
|
|
from ..users import User
|
|
from .deps import FLASH_ERROR, FLASH_OK, flash, redirect, require_admin
|
|
from .retention_section import RUN_PATH, SLUG, format_counts
|
|
|
|
router = APIRouter()
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
@router.post(RUN_PATH)
|
|
async def retention_run(request: Request, admin: User = Depends(require_admin)):
|
|
service = request.app.state.runtime.retention
|
|
try:
|
|
record = await asyncio.to_thread(service.run, ORIGIN_MANUAL, admin.username)
|
|
flash(request, f"Aufgeräumt. Gelöscht: {format_counts(record.counts)}.", FLASH_OK)
|
|
except RetentionBusy:
|
|
flash(request, "Das Aufräumen läuft bereits.", FLASH_ERROR)
|
|
except Exception:
|
|
log.exception("Aufbewahrung (manuell) fehlgeschlagen")
|
|
flash(request, "Aufräumen fehlgeschlagen, Details im Journal.", FLASH_ERROR)
|
|
return redirect(f"/settings/{SLUG}")
|