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

No one assigned

    Type

    No type

    Projects

    Status

    Ready to Pick Up

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions