Add 'Compute now' button to job detail File & Geometry card

POST /jobs/{id}/analyse clears the stl_cache entry and re-runs trimesh,
then redirects back to the detail page. Button hidden for .gcode files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martin Hohenberg
2026-06-18 22:20:01 +02:00
parent 13422ba29b
commit b9710faf73
2 changed files with 23 additions and 4 deletions

View File

@@ -21,7 +21,7 @@ from app.models.todo import Todo
from app.constants import COLORS, MATERIALS
from app.filamentdb import available_colors, available_materials, get_stock
from app.stl import get_stl_dir, list_stl_files
from app.stl_analysis import analyse, get_cache_map
from app.stl_analysis import analyse, get_cache_map # noqa: F401 used in job_detail route
router = APIRouter()
templates = Jinja2Templates(directory="app/templates")
@@ -222,6 +222,18 @@ def job_detail(job_id: int, request: Request, db: Session = Depends(get_db)):
})
@router.post("/jobs/{job_id}/analyse")
def analyse_job_file(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 or not job.file_name:
raise HTTPException(status_code=404, detail="Job or file not found")
db.query(StlCache).filter_by(filename=job.file_name).delete()
db.commit()
analyse(job.file_name, db)
return RedirectResponse(url=f"/jobs/{job_id}", status_code=HTTP_303_SEE_OTHER)
@router.post("/jobs/{job_id}/log")
def add_job_log(job_id: int, message: str = Form(...), db: Session = Depends(get_db)):
db.add(JobLog(job_id=job_id, message=message.strip()))