From da269d08f166e488a4abfdefe91bf5f1072d015d Mon Sep 17 00:00:00 2001 From: Oliver G Date: Sat, 21 Feb 2026 14:11:03 +0100 Subject: [PATCH] chore(admin): remove legal approval step from UI workflow --- backend/app/admin_ui.py | 23 +-------------------- backend/templates/admin_article_detail.html | 23 +-------------------- backend/templates/admin_dashboard.html | 1 - backend/tests/test_admin_ui.py | 2 +- 4 files changed, 3 insertions(+), 46 deletions(-) diff --git a/backend/app/admin_ui.py b/backend/app/admin_ui.py index 89819cf..d3ca53e 100644 --- a/backend/app/admin_ui.py +++ b/backend/app/admin_ui.py @@ -38,7 +38,6 @@ from .repositories import ( list_runs, list_sources, set_article_image_decision, - set_article_legal_review, upsert_article, update_feed, update_source, @@ -185,7 +184,7 @@ def _classify_publish_error(error_message: str | None) -> tuple[str, str]: if not text.strip(): return "ok", "-" if "rechtsfreigabe fehlt" in text or "hauptbild nicht gesetzt" in text or "status ist nicht" in text: - return "policy", "Artikelvoraussetzungen im UI prüfen (Status/Rechtsfreigabe/Hauptbild)." + return "policy", "Artikelvoraussetzungen im UI prüfen (Status/Hauptbild)." if "401" in text or "403" in text or "authorization" in text or "forbidden" in text or "unauthorized" in text: return "auth", "WordPress Nutzer/App-Passwort prüfen." if "404" in text and ("media" in text or "posts" in text or "wp-json" in text): @@ -245,13 +244,6 @@ def _legal_checklist(article: dict, feed: dict | None) -> list[dict[str, str]]: "value": feed.get("source_risk_level") if feed else "-", } ) - checks.append( - { - "label": "Manuelle Rechtsfreigabe", - "status": "ok" if int(article.get("legal_checked", 0)) == 1 else "missing", - "value": article.get("legal_checked_at") or "-", - } - ) image_review = meta.get("image_review") if isinstance(meta.get("image_review"), dict) else {} selected_image = image_review.get("selected_url") if isinstance(image_review.get("selected_url"), str) else None checks.append( @@ -666,19 +658,6 @@ def admin_image_proxy(request: Request, url: str): return Response(content=body, media_type=content_type) -@router.post("/admin/articles/{article_id}/legal-review") -def admin_article_legal_review(request: Request, article_id: int, approved: str = Form("0"), note: str = Form("")): - user = _admin_user(request) - if not user: - return RedirectResponse(url="/admin/login", status_code=303) - - is_approved = approved == "1" - ok = set_article_legal_review(article_id, approved=is_approved, note=note or None, actor=user) - if not ok: - return _dashboard_redirect(msg=f"Artikel #{article_id} nicht gefunden", msg_type="error") - return RedirectResponse(url=f"/admin/articles/{article_id}", status_code=303) - - @router.post("/admin/sources/create") def admin_create_source( request: Request, diff --git a/backend/templates/admin_article_detail.html b/backend/templates/admin_article_detail.html index 70d5c57..992fe20 100644 --- a/backend/templates/admin_article_detail.html +++ b/backend/templates/admin_article_detail.html @@ -58,7 +58,7 @@
-

Rechts-Checkliste

+

Checkliste

@@ -173,27 +173,6 @@

Dieser Text wird für den WordPress-Entwurf verwendet, falls vorhanden.

-
-

Rechtsfreigabe

-

Freigabe: - {% if article.legal_checked %} - Freigegeben - {% else %} - Nicht freigegeben - {% endif %} -

-

Zeitpunkt: {{ article.legal_checked_at or "-" }}

-

Notiz: {{ article.legal_note or "-" }}

-
- - - - -
-

Status ändern

{% if article.status_ui in ["new", "rewrite"] %} diff --git a/backend/templates/admin_dashboard.html b/backend/templates/admin_dashboard.html index c82f8e3..f24b76e 100644 --- a/backend/templates/admin_dashboard.html +++ b/backend/templates/admin_dashboard.html @@ -258,7 +258,6 @@
KriteriumStatusWert
{{ a.status_ui }} -
Legal: {{ "OK" if a.legal_checked else "offen" }}
Publish: {{ "bereit" if a.publish_ready else "blockiert" }}
{% if not a.publish_ready and a.publish_blockers %}
{{ a.publish_blockers|join(", ") }}
diff --git a/backend/tests/test_admin_ui.py b/backend/tests/test_admin_ui.py index eab63fd..6b7d1c7 100644 --- a/backend/tests/test_admin_ui.py +++ b/backend/tests/test_admin_ui.py @@ -131,7 +131,7 @@ class TestAdminUi(unittest.TestCase): res = self.client.get(f"/admin/articles/{article_id}", follow_redirects=True) self.assertEqual(res.status_code, 200) self.assertIn("Artikel-Detail", res.text) - self.assertIn("Rechts-Checkliste", res.text) + self.assertIn("Checkliste", res.text) decision = self.client.post( f"/admin/articles/{article_id}/images/decision",