CodeForPhilly / CodeForPhilly/balancer-main
allow admin to delete files from ListOfFiles page
- Dominant language
- TypeScript
- Stars
- 21
- Forks
- 19
- PR merge metrics
- No merged PRs in 30d
Description
### Current State
Currently, there is no option to delete a file. In `/listoffiles`, there is only an "edit" button and a "download" button for each file.
We do have a backend endpoint for this at `DELETE /v1/api/uploadFile`. The view is at `/server/api/views/uploadFile/views.py/UploadFileView/delete`, but it is not called by the frontend currently. It allows **only the uploader** of the file to delete it.
### Expected Behavior
- Any admin (`superuser`) can delete any file from the `/listoffiles` page.
- Shows a confirmation prompt before deletion
- Make accidental deletion near impossible by requiring them to type "delete"
- Deleted file disappears from the list **without page reload**
## Changes needed
Backend:
- in `uploadFile/views.py/uploadFileView/delete`, update the permission check to allow superusers (admin):
`if upload_file.uploaded_by != request.user and not request.user.is_superuser:`
Frontend:
- Add a delete button to each `FileRow` alongside the existing edit and download buttons
- Add the confirmation dialog before sending the delete request
- call `DELETE /api/v1/api/uploadFile` with `{ guid: file.guid }` and JWT auth header (same pattern as the existing edit handler around `FileRow.tsx/FileRow/handleSave`)
- On success, remove the file from the parent component's state, making it disappear without a reload
- for reference, check out how `updateFileName` works
- you'll need to create a new `onDelete` prop, defined in `ListOfFiles` and passed to `FileRow`.
@sue-hntr Sue is a UX designer and can weigh in on design decisions and other specifics
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.