Skip to content

Allow proposal states to be changed after a decision and let withdrawals be reinstated #101

Description

@Aqil-Ahmad

Review decisions on exhibition requests are currently one-way. Once a request leaves
submitted, its state is terminal:

  • The organizer's inline/bulk actions (approve / reject / withdraw) only appear while a
    request is submitted. After a decision the row shows no actions, and the detail view
    drops to notes-only.
  • A submitter who withdraws their own request cannot undo it, even if it was a mistake.
    There is no "reinstate" action anywhere.

So a misclick is permanent: rejecting the wrong request, or a submitter withdrawing by
accident, can only be undone by editing the database.

This differs from the CfP in orga, where SubmissionStates.valid_next_states makes
decisions reversible — a rejected proposal can be accepted, and a withdrawn one can go
back to submitted.

Notes

  • Reactivate, don't duplicate. Withdrawing an accepted request deactivates the
    partner profile it created rather than deleting it. Re-approving must reactivate that
    existing profile — the current approve path returns early when a partner is already
    linked, so it would hand back the deactivated one without re-enabling it.
  • Emails. Approve/reject queue the acceptance/rejection emails via the shared model
    methods; a changed decision should queue the email matching the new state, and moving
    back to submitted should not send a decision email.
  • Terminal-state guards exist in a few places (list action endpoint, detail review form,
    bulk actions) and all need to move to the shared transition map so the rules stay
    consistent.

Follow-up on #91 #92

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions