feat(legal): add structured attribution fields and publish legal gate
This commit is contained in:
parent
c52363f1a7
commit
5159a6e3b4
10 changed files with 259 additions and 16 deletions
|
|
@ -95,6 +95,14 @@ class TestAdminUi(unittest.TestCase):
|
|||
summary="Summary A",
|
||||
content_raw="Volltext A",
|
||||
content_rewritten=None,
|
||||
image_urls_json='["https://example.org/img.jpg"]',
|
||||
press_contact="Kontakt",
|
||||
source_name_snapshot="Test Source",
|
||||
source_terms_url_snapshot="https://example.org/terms",
|
||||
source_license_name_snapshot="cc-by",
|
||||
legal_checked=False,
|
||||
legal_checked_at=None,
|
||||
legal_note=None,
|
||||
word_count=2,
|
||||
status="new",
|
||||
meta_json='{"extraction":{"images":["https://example.org/img.jpg"],"press_contact":"Kontakt"}}',
|
||||
|
|
|
|||
|
|
@ -73,12 +73,22 @@ class TestArticleWorkflow(unittest.TestCase):
|
|||
self.assertEqual(r1.status_code, 200)
|
||||
self.assertEqual(r1.json()["to_status"], "approved")
|
||||
|
||||
blocked_publish = self.client.post(f"/api/articles/{article_id}/transition", json={"target_status": "published"})
|
||||
self.assertEqual(blocked_publish.status_code, 400)
|
||||
|
||||
legal = self.client.post(
|
||||
f"/api/articles/{article_id}/legal-review",
|
||||
json={"approved": True, "note": "Rechte geprueft"},
|
||||
)
|
||||
self.assertEqual(legal.status_code, 200)
|
||||
|
||||
t2 = self.client.post(f"/api/articles/{article_id}/transition", json={"target_status": "published"})
|
||||
self.assertEqual(t2.status_code, 200)
|
||||
|
||||
final = self.client.get(f"/api/articles/{article_id}")
|
||||
self.assertEqual(final.status_code, 200)
|
||||
self.assertEqual(final.json()["item"]["status"], "published")
|
||||
self.assertEqual(final.json()["item"]["legal_checked"], 1)
|
||||
|
||||
def test_invalid_transition_rejected(self) -> None:
|
||||
article_id = self._create_article()
|
||||
|
|
|
|||
|
|
@ -77,6 +77,14 @@ class TestSQLiteRepositories(unittest.TestCase):
|
|||
summary="Kurzfassung",
|
||||
content_raw="Originaltext",
|
||||
content_rewritten="Umschreibung",
|
||||
image_urls_json='["https://example.org/img.jpg"]',
|
||||
press_contact="Pressekontakt X",
|
||||
source_name_snapshot="GovData",
|
||||
source_terms_url_snapshot="https://www.govdata.de/dl-de/by-2-0",
|
||||
source_license_name_snapshot="dl-de/by-2-0",
|
||||
legal_checked=False,
|
||||
legal_checked_at=None,
|
||||
legal_note=None,
|
||||
word_count=120,
|
||||
status="review",
|
||||
meta_json='{"lang":"de"}',
|
||||
|
|
@ -98,6 +106,14 @@ class TestSQLiteRepositories(unittest.TestCase):
|
|||
summary="Kurzfassung 2",
|
||||
content_raw="Originaltext 2",
|
||||
content_rewritten="Umschreibung 2",
|
||||
image_urls_json='["https://example.org/img2.jpg"]',
|
||||
press_contact="Pressekontakt Y",
|
||||
source_name_snapshot="GovData",
|
||||
source_terms_url_snapshot="https://www.govdata.de/dl-de/by-2-0",
|
||||
source_license_name_snapshot="dl-de/by-2-0",
|
||||
legal_checked=True,
|
||||
legal_checked_at="2026-02-18T00:10:00Z",
|
||||
legal_note="ok",
|
||||
word_count=140,
|
||||
status="approved",
|
||||
meta_json='{"lang":"de","v":2}',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue