Add cancel job action
POST /jobs/{id}/cancel sets status → cancelled, frees printer if printing,
logs 'Job cancelled'. Button visible in all non-terminal states (queued, printing).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user