Files
checkbot/app/web/retention_pages.py
patrickandClaude Sonnet 5.5 9c4f7366eb
test / pytest (3.11) (push) Canceled after 0s
test / pytest (3.13) (push) Canceled after 0s
feat: Phase 6 prompt versioning with test area, retention
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 02:17:01 +01:00

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}")