diff --git a/app/routers/ui.py b/app/routers/ui.py index 6cf9d2c..1c886a6 100644 --- a/app/routers/ui.py +++ b/app/routers/ui.py @@ -354,6 +354,20 @@ def start_job(job_id: int, printer_id: int = Form(...), db: Session = Depends(ge return RedirectResponse(url=f"/jobs/{job_id}", status_code=HTTP_303_SEE_OTHER) +@router.post("/jobs/{job_id}/cancel") +def cancel_job(job_id: int, db: Session = Depends(get_db)): + from fastapi import HTTPException + job = db.query(PrintJob).filter(PrintJob.id == job_id).first() + if not job: + raise HTTPException(404, "Job not found") + if job.printer and job.status == JobStatus.printing: + job.printer.status = PrinterStatus.idle + job.status = JobStatus.cancelled + db.add(JobLog(job_id=job_id, message="Job cancelled")) + db.commit() + return RedirectResponse(url=f"/jobs/{job_id}", status_code=HTTP_303_SEE_OTHER) + + @router.post("/jobs/{job_id}/stop") def stop_job(job_id: int, db: Session = Depends(get_db)): from fastapi import HTTPException diff --git a/app/templates/job_detail.html b/app/templates/job_detail.html index 177efa2..da3665c 100644 --- a/app/templates/job_detail.html +++ b/app/templates/job_detail.html @@ -27,14 +27,13 @@ {# ── Job actions ── #} {% set s = job.status.value %} -{% if s == 'queued' %} -