Files: un Maker cancella qualunque file sotto uploads, compresi i CSV di statistica #21
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: media
FILE: src/backend/api/routers/files.py:204-222 (delete), :191 (get)
COSA: nessun legame fra file e ricetta/proprietario. DELETE copre
statistics/*.csv, i disegni di versioni storiche, il logo. GET con qualunque ruolo legge i CSV di tutte le produzioni.INPUT:
DELETE /api/files/statistics/production_1_<ts>.csvda Maker.VERIFICATO: script pytest → "DELETE statistica da Maker -> 204 esiste ancora: False".
ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:22:57Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto A3MODIFICHE: src/backend/api/routers/files.py — DELETE: vietato sotto
statistics/,reports/,logos/(403; il logo si cambia dalle impostazioni); per i file di ricetta (<recipe_id>/<version_id>/...eimages/,pdfs/) rifiuta 409 se il percorso è referenziato da una versione non corrente o con misure (cercaimage_path/file_pathin Recipe, RecipeVersion, RecipeTask, RecipeSubtask: guarda i modelli ORM). GET distatistics/*ereports/*richiede Metrologist, Supervisor o admin.TEST: Maker DELETE statistics/x.csv → 403 e il file esiste ancora; MeasurementTec GET statistics → 403; DELETE di immagine non referenziata → 204.
Soluzione
ESITO: fatto
COSA: DELETE vietato sotto statistics/, reports/, logos/ (403) e sui file referenziati da versioni non correnti o con misure (409). GET di statistics/ e reports/ richiede Metrologist, Supervisor o admin.
COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1):e8a8aeePROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).