Add PDF upload, download and voice filter #5
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/score-files"
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?
Why
Members need their parts before rehearsal, so the archive has to hold the actual PDFs. Sheet music must stay inside its group, and a homelab disk must not fill up from one oversized request. Everyone may reach every part of their group, but a member usually wants only their own.
What
ScoreFilewith role, instrument, part number, sha256, size and page countDATA_DIR/<group_id>/<score_set_id>/<file_id>.pdf; names are generated by the server<Archivnr>_<Titel>_<Instrument>.pdfand is built on delivery, so metadata changes rename nothing on disk%PDF-header, opens in pypdf, not encrypted, at least one page, no duplicate within the score set. Written to a partial file and renamed atomicallyBodySizeLimitMiddlewarestops a request while it is being received, also withoutContent-LengthForm fields that were parsed by hand are now typed, so manipulated values give a clean 422 instead of a 500. This also fixes the invitation and profile forms from the groups PR.
Verification
make lintandpytestpass (274 tests), including no-PDF, damaged, encrypted, oversized with and withoutContent-Length, duplicates and path traversal in the filename