feat(campaigns): add governed collaboration thread
Module Package Release / publish-packages (push) Successful in 13s

This commit is contained in:
2026-08-22 00:09:34 +02:00
parent 5a21067e44
commit c2f083e5f6
25 changed files with 2315 additions and 24 deletions
+29
View File
@@ -11,6 +11,7 @@ from govoplan_campaign.backend.db.models import (
AttachmentBlob,
AttachmentInstance,
Campaign,
CampaignCollaborationEntry,
CampaignIssue,
CampaignJob,
CampaignMessageAction,
@@ -100,6 +101,7 @@ class CampaignDsarProviderTests(unittest.TestCase):
DataSubjectRequest.__table__,
Campaign.__table__,
CampaignShare.__table__,
CampaignCollaborationEntry.__table__,
CampaignVersion.__table__,
CampaignJob.__table__,
CampaignIssue.__table__,
@@ -337,6 +339,21 @@ class CampaignDsarProviderTests(unittest.TestCase):
permission="read",
created_by_user_id=self.other_user.id,
)
collaboration = CampaignCollaborationEntry(
id="collaboration-1",
tenant_id="tenant-1",
campaign_id=self.campaign.id,
campaign_version_id=self.version.id,
actor_user_id=self.user.id,
actor_label_snapshot="Subject",
visibility="collaborators",
content="Subject-authored discussion text",
content_sha256="9" * 64,
mention_user_ids=[self.other_user.id],
reference_kind="campaign_version",
reference_id=self.version.id,
reference_label="Version 1",
)
self.profile = RecipientImportMappingProfile(
id="mapping-1",
tenant_id="tenant-1",
@@ -410,6 +427,7 @@ class CampaignDsarProviderTests(unittest.TestCase):
postbox_attempt,
print_attempt,
self.share,
collaboration,
self.profile,
blob,
attachment,
@@ -456,11 +474,22 @@ class CampaignDsarProviderTests(unittest.TestCase):
"campaign_print_attempt",
"campaign_report_projection",
"campaign_share",
"campaign_collaboration_entry",
"recipient_import_mapping_profile",
"campaign_schedule",
"campaign_attachment",
}.issubset(resource_types)
)
collaboration_record = next(
record
for record in records
if record.resource_type == "campaign_collaboration_entry"
)
self.assertEqual(
"Subject-authored discussion text",
collaboration_record.data["posted_text"],
)
self.assertTrue(collaboration_record.immutable_evidence)
report = next(
record
for record in records