feat: add campaign copying scheduling and residual handling
This commit is contained in:
@@ -14,6 +14,7 @@ from govoplan_core.core.campaigns import (
|
||||
CampaignPolicyContext,
|
||||
CampaignPolicyContextProvider,
|
||||
CampaignRetentionProvider,
|
||||
CampaignScheduleProvider,
|
||||
)
|
||||
from govoplan_core.core.ownership import (
|
||||
OwnershipActionDecision,
|
||||
@@ -715,6 +716,37 @@ def delivery_tasks_capability(context: object) -> CampaignDeliveryTaskService:
|
||||
return CampaignDeliveryTaskService()
|
||||
|
||||
|
||||
class CampaignScheduleService(CampaignScheduleProvider):
|
||||
def dispatch_due(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str | None = None,
|
||||
now=None,
|
||||
limit: int = 50,
|
||||
) -> Mapping[str, object]:
|
||||
from govoplan_campaign.backend.campaign.scheduling import (
|
||||
dispatch_due_campaign_schedules,
|
||||
)
|
||||
|
||||
return dispatch_due_campaign_schedules(
|
||||
session, # type: ignore[arg-type]
|
||||
tenant_id=tenant_id,
|
||||
now=now,
|
||||
limit=limit,
|
||||
)
|
||||
|
||||
|
||||
def schedules_capability(context: object) -> CampaignScheduleService:
|
||||
from govoplan_campaign.backend.runtime import configure_runtime
|
||||
|
||||
configure_runtime(
|
||||
registry=getattr(context, "registry", None),
|
||||
settings=getattr(context, "settings", None),
|
||||
)
|
||||
return CampaignScheduleService()
|
||||
|
||||
|
||||
class CampaignRetentionService(CampaignRetentionProvider):
|
||||
def apply_retention(self, session: object, *, dry_run, now, policy_for_campaign_id):
|
||||
from govoplan_campaign.backend.retention import apply_campaign_retention
|
||||
|
||||
Reference in New Issue
Block a user