From e3cc476508c5ef144ca5315cc410a0c2ad86c7f7 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Wed, 22 Jul 2026 18:26:11 +0200 Subject: [PATCH] fix(campaign): initialize delivery worker runtime --- package.json | 2 +- pyproject.toml | 2 +- src/govoplan_campaign/backend/capabilities.py | 6 ++++++ src/govoplan_campaign/backend/manifest.py | 2 +- tests/test_sending_jobs.py | 12 ++++++++++++ webui/package.json | 2 +- 6 files changed, 22 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e0aa826..43fa367 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@govoplan/campaign-webui", - "version": "0.1.10", + "version": "0.1.11", "private": true, "type": "module", "main": "webui/src/index.ts", diff --git a/pyproject.toml b/pyproject.toml index 46f4408..69f1fae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "govoplan-campaign" -version = "0.1.10" +version = "0.1.11" description = "GovOPlaN campaigns module with backend and WebUI integration." readme = "README.md" requires-python = ">=3.12" diff --git a/src/govoplan_campaign/backend/capabilities.py b/src/govoplan_campaign/backend/capabilities.py index f7fc6af..de9d2e4 100644 --- a/src/govoplan_campaign/backend/capabilities.py +++ b/src/govoplan_campaign/backend/capabilities.py @@ -279,6 +279,12 @@ class CampaignDeliveryTaskService(CampaignDeliveryTaskProvider): def delivery_tasks_capability(context: object) -> CampaignDeliveryTaskService: + from govoplan_campaign.backend.runtime import configure_runtime + + configure_runtime( + registry=getattr(context, "registry", None), + settings=getattr(context, "settings", None), + ) return CampaignDeliveryTaskService() diff --git a/src/govoplan_campaign/backend/manifest.py b/src/govoplan_campaign/backend/manifest.py index 7db6ea3..a0affbd 100644 --- a/src/govoplan_campaign/backend/manifest.py +++ b/src/govoplan_campaign/backend/manifest.py @@ -156,7 +156,7 @@ def _campaigns_router(context: ModuleContext): manifest = ModuleManifest( id="campaigns", name="Campaigns", - version="0.1.10", + version="0.1.11", required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR), optional_dependencies=("files", "mail", "notifications", "addresses"), provides_interfaces=( diff --git a/tests/test_sending_jobs.py b/tests/test_sending_jobs.py index 7a48787..a51a8b0 100644 --- a/tests/test_sending_jobs.py +++ b/tests/test_sending_jobs.py @@ -10,6 +10,7 @@ from govoplan_campaign.backend.db.models import ( JobSendStatus, JobValidationStatus, ) +from govoplan_campaign.backend.capabilities import delivery_tasks_capability from govoplan_campaign.backend.sending.jobs import ( SendJobResult, _queue_validation_statuses, @@ -48,6 +49,17 @@ def _job(entry_id: str, **overrides): class CampaignQueueSelectionTests(unittest.TestCase): + def test_delivery_task_capability_configures_module_runtime_for_worker_processes(self): + registry = object() + settings = object() + context = SimpleNamespace(registry=registry, settings=settings) + + with patch("govoplan_campaign.backend.runtime.configure_runtime") as configure: + capability = delivery_tasks_capability(context) + + self.assertIsNotNone(capability) + configure.assert_called_once_with(registry=registry, settings=settings) + def test_selects_queueable_jobs_without_reclassifying_retry_states(self): skipped_send = _job("1", send_status=JobSendStatus.FAILED_TEMPORARY.value) skipped_queue = _job("2", queue_status=JobQueueStatus.PAUSED.value) diff --git a/webui/package.json b/webui/package.json index 8e54082..a1aaf7e 100644 --- a/webui/package.json +++ b/webui/package.json @@ -1,6 +1,6 @@ { "name": "@govoplan/campaign-webui", - "version": "0.1.10", + "version": "0.1.11", "private": true, "type": "module", "main": "src/index.ts",