- Replace all UnitAssignment "active" checks from `status == "active"` to `assigned_until == None` in both project_locations.py and projects.py. This aligns with the canonical definition: active = no end date set. (status field is still set in sync, but is no longer the query criterion) - Add `_require_sound_project()` helper to both routers and call it at the top of every sound-monitoring-specific endpoint (FTP browser, FTP downloads, RND file viewer, all Excel report endpoints, combined report wizard, upload-all, NRL live status, NRL data upload). Vibration projects hitting these endpoints now receive a clear 400 instead of silently failing or returning empty results. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
174 KiB
174 KiB