fix: resolve model weight paths against DATA_DIR (REQ-187)
- config.py: resolve_data_path (legacy abs + rel) + rel_data_path - all file-opening reads wrapped: preview, autolabel, training, model download, live count, projects.get; training_start_point hack replaced - new writes store paths relative to data/ - legacy stale rows (/home/asus/reTraining/...) resolve without migration - requirements: REQ-187 added; REQ-188 (per-class max box) + REQ-186 copy-line amendment drafted for the next task
This commit is contained in:
1 parent
8f41c6c85a
commit
dee58e4ae5
10 files changed
+93
-32
No files matched your search
@@ -7,7 +7,7 @@ from fastapi import APIRouter, HTTPException
|
||||
from fastapi.responses import FileResponse
|
||||
from pydantic import BaseModel
|
||||
|
||||
from backend import hardware, training
|
||||
from backend import config, hardware, training
|
||||
from backend.api.common import project_or_404
|
||||
|
||||
router = APIRouter(tags=["models"])
|
||||
@@ -55,10 +55,11 @@ def list_models(project_id: int) -> dict:
|
||||
@router.get("/api/models/{model_id}/weights")
|
||||
def download_weights(model_id: int):
|
||||
version = training.get_version(model_id)
|
||||
if version is None or not os.path.isfile(version["weights_path"]):
|
||||
weights = config.resolve_data_path(version["weights_path"]) if version else None
|
||||
if version is None or not os.path.isfile(weights):
|
||||
raise HTTPException(404, "No weights for that version")
|
||||
name = version.get('name') or f"v{version['version']}"
|
||||
return FileResponse(version["weights_path"], media_type="application/octet-stream",
|
||||
return FileResponse(weights, media_type="application/octet-stream",
|
||||
filename=f"{name}-best.pt")
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user