Skip to content

feat: allow admin to delete files from ListOfFiles page #476

@amahuli03

Description

@amahuli03

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

Metadata

Metadata

Assignees

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions