Files
bambuddy/backend/app/api/routes/background_dispatch.py
T

33 lines
1.1 KiB
Python

from fastapi import APIRouter, HTTPException
from backend.app.core.auth import RequirePermissionIfAuthEnabled
from backend.app.core.permissions import Permission
from backend.app.models.user import User
from backend.app.services.background_dispatch import background_dispatch
router = APIRouter(prefix="/background-dispatch", tags=["background-dispatch"])
@router.delete("/{job_id}")
async def cancel_dispatch_job(
job_id: int,
_: User | None = RequirePermissionIfAuthEnabled(Permission.PRINTERS_CONTROL),
):
"""Cancel a background-dispatch job.
Queued jobs are cancelled immediately. Active jobs are marked for
cooperative cancellation and will stop at the next cancellation checkpoint.
"""
result = await background_dispatch.cancel_job(job_id)
if not result["cancelled"]:
raise HTTPException(status_code=404, detail="Dispatch job not found")
return {
"status": "cancelling" if result.get("pending") else "cancelled",
"job_id": result["job_id"],
"source_name": result["source_name"],
"printer_id": result["printer_id"],
"printer_name": result["printer_name"],
}