Skip to content

[feature:gsoc26] Admin UI, Draft/Unconfirmed Safety Workflow & Failure Notification System #414

@atif09

Description

@atif09

Is your feature request related to a problem? Please describe.

With extraction running asynchronously, the admin interface has no way to reflect extraction state to the operator. There are no status badges on image or build list views, no auto-refresh when extraction is in progress, and no enforcement of read-only fields once metadata has been confirmed. Unconfirmed images can currently be included in mass upgrades without restriction, and there is no manual override workflow for images where extraction fails

There is also no notification system to inform the uploader when extraction completes or fails, and no structured way to surface failure reasons with actionable next steps

Describe the solution you'd like
I would like to introduce the admin UI enhancements, draft/unconfirmed safety workflow, and three-layer failure notification system that make the extraction pipeline clearer and actionable for operators

  1. Add status badges to FirmwareImageAdmin and BuildAdmin list views via format_html, displaying:
  • Unconfirmed , Analyzing , Success , Failed , Manually Confirmed, Invalid for images
  • Analyzing , Success , Failed , Manually Confirmed , Invalid for builds
  1. Implement auto-refresh on the FirmwareImage change form via a small JS snippet that polls when extraction_status is in_progress , stopping once the status transitions to a terminal state

  2. Enforce read-only metadata fields via get_readonly_fields() once an image reaches confirmed status, preventing configuration drift after successful extraction.
    In the case of incorrect metadata being extracted, we will provide an 'enable manual edit' admin action. Through this action, the status will transition to manually_confirmed, unlocking the fields for manual correction.

  3. Implement server-side validation to block both single and batch upgrade operations whenever a firmware image has not reached a success or manually_confirmed state

  4. Enforce checks at the mass-upgrade initiation phase to prevent launching operations for any build containing images still in the pending or analyzing states

  5. Restrict the auto pairing engine to ignore any FirmwareImage that has not reached a terminal, confirmed status which is either success or manually_confirmed

  6. Implement the manual override workflow in save_model() : when an operator saves a failed image with metadata fields filled in, the status transitions directly to manually_confirmed , unblocking the build for mass upgrades

  7. Add a re_extract_metadata admin action on FirmwareImageAdmin to allow operators to manually trigger re-extraction on selected image/images

  8. Mark all extraction fields as read-only in FirmwareImageSerializer so the API never accepts extraction state as user input

  9. Implement the three-layer failure notification system:

  • failure_reason determines the change form state: unsupported_format unlocks all metadata fields for manual input, invalid_file keeps all fields locked with no manual override offered
  • A human readable message tells the operator what happened and the next steps
  • A generic_notification is sent to the uploader with a direct link to the image

Bell notification with hyperlink to the build page

Image

Warning and error notifications

Image

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestgsoc-ideaIssues part of Google Summer of Code project

Type

No type

Projects

Status

ToDo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions