CodeForPhilly / CodeForPhilly/balancer-main

allow admin to delete files from ListOfFiles page

Open
#476 0 comments 0 reactions 0 assignees View on GitHub
Bug
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.

Image

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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.