from __future__ import annotations from typing import Any from govoplan_core.core.modules import ModuleContext from govoplan_files.backend.runtime import configure_runtime from govoplan_files.backend.storage.campaign_attachments import ( annotate_built_messages_with_managed_files, managed_match_payloads, prepared_campaign_snapshot, public_attachment_summary_payload, ) from govoplan_files.backend.storage.campaign_usage import record_campaign_attachment_uses_for_jobs from govoplan_files.backend.storage.files import current_version_and_blob class FilesCampaignCapability: prepared_campaign_snapshot = staticmethod(prepared_campaign_snapshot) managed_match_payloads = staticmethod(managed_match_payloads) public_attachment_summary_payload = staticmethod(public_attachment_summary_payload) annotate_built_messages_with_managed_files = staticmethod(annotate_built_messages_with_managed_files) record_campaign_attachment_uses_for_jobs = staticmethod(record_campaign_attachment_uses_for_jobs) current_version_and_blob = staticmethod(current_version_and_blob) @staticmethod def mark_job_attachment_uses_sent(session: Any, job: Any) -> None: from govoplan_files.backend.storage.campaign_usage import mark_job_attachment_uses_sent mark_job_attachment_uses_sent(session, job) def campaign_capability(context: ModuleContext) -> FilesCampaignCapability: configure_runtime(settings=context.settings) return FilesCampaignCapability()