From 28e4dc4333089be9b765f5e136f1bd5e1a687d40 Mon Sep 17 00:00:00 2001 From: CCS Admin Date: Fri, 27 Feb 2026 08:45:26 +0000 Subject: [PATCH] fix: allow reactivating rejected disclosures in admin view "Wieder aufleben" now also works for rejected disclosures, setting status to approved with a new 24h window. Both buttons (reactivate and delete) now appear for rejected and expired/revoked disclosures. Co-Authored-By: Claude Opus 4.6 --- backend/app/services/disclosure_service.py | 9 ++++--- frontend/src/pages/DisclosuresPage.tsx | 29 +++++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/backend/app/services/disclosure_service.py b/backend/app/services/disclosure_service.py index 5854a5e..e4614ae 100644 --- a/backend/app/services/disclosure_service.py +++ b/backend/app/services/disclosure_service.py @@ -141,14 +141,15 @@ def revoke_disclosure(db: Session, request_id: int, user_id: int, *, admin: bool def reactivate_disclosure(db: Session, request_id: int) -> DisclosureRequest: - """Reactivate an expired/revoked disclosure by granting a new 24h window.""" + """Reactivate an expired, revoked, or rejected disclosure with a new 24h window.""" dr = db.query(DisclosureRequest).filter(DisclosureRequest.id == request_id).first() if not dr: raise ValueError("Disclosure request not found") - if dr.status != "approved": - raise ValueError("Only approved disclosures can be reactivated") - if dr.expires_at and dr.expires_at > _utcnow_naive(): + if dr.status == "pending": + raise ValueError("Pending requests must be approved first") + if dr.status == "approved" and dr.expires_at and dr.expires_at > _utcnow_naive(): raise ValueError("Disclosure is still active") + dr.status = "approved" dr.expires_at = _utcnow_naive() + timedelta(hours=24) db.commit() db.refresh(dr) diff --git a/frontend/src/pages/DisclosuresPage.tsx b/frontend/src/pages/DisclosuresPage.tsx index 24ffa33..3a3b87c 100644 --- a/frontend/src/pages/DisclosuresPage.tsx +++ b/frontend/src/pages/DisclosuresPage.tsx @@ -160,15 +160,26 @@ export function DisclosuresPage() { )} {dr.status === 'rejected' && ( - + <> + + + )}