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
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
superuser) can delete any file from the/listoffilespage.Changes needed
Backend:
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:
FileRowalongside the existing edit and download buttonsDELETE /api/v1/api/uploadFilewith{ guid: file.guid }and JWT auth header (same pattern as the existing edit handler aroundFileRow.tsx/FileRow/handleSave)updateFileNameworksonDeleteprop, defined inListOfFilesand passed toFileRow.@sue-hntr Sue is a UX designer and can weigh in on design decisions and other specifics