Implement governed hybrid campaign delivery
This commit is contained in:
@@ -65,6 +65,7 @@ from govoplan_campaign.backend.campaign.postbox_targets import (
|
||||
from govoplan_campaign.backend.integrations import (
|
||||
PostboxDeliveryUnavailable,
|
||||
postbox_integration,
|
||||
templates_integration,
|
||||
)
|
||||
from govoplan_core.db.session import get_session
|
||||
from govoplan_core.core.distribution_lists import (
|
||||
@@ -755,6 +756,29 @@ def campaign_postbox_catalog(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{campaign_id}/print-templates")
|
||||
def campaign_print_templates(
|
||||
campaign_id: str,
|
||||
query: str = Query(default="", min_length=0, max_length=200),
|
||||
session: Session = Depends(get_session),
|
||||
principal: ApiPrincipal = Depends(require_scope("campaigns:campaign:read")),
|
||||
):
|
||||
_get_campaign_for_principal(session, campaign_id, principal)
|
||||
integration = templates_integration()
|
||||
if not integration.available:
|
||||
return {"available": False, "templates": []}
|
||||
templates = integration.list_templates(
|
||||
session,
|
||||
principal,
|
||||
query=query,
|
||||
limit=250,
|
||||
)
|
||||
return {
|
||||
"available": True,
|
||||
"templates": [dataclasses.asdict(template) for template in templates],
|
||||
}
|
||||
|
||||
|
||||
@router.post(
|
||||
"/{campaign_id}/recipient-address-sources/snapshot",
|
||||
response_model=CampaignRecipientAddressSourceSnapshotResponse,
|
||||
|
||||
Reference in New Issue
Block a user