from anydi import singleton from email_campaigns.adapters.db import Repository from email_campaigns.adapters.stripo import CampaignStripoClientV2 from email_campaigns.campaigns.exceptions import EmailCampaignMustBeDraftError from email_campaigns.campaigns.models import EmailCampaign from email_campaigns.emails.cache import EmailPublicPreviewCache from email_campaigns.emails.handlers import AutosaveEmailV2Handler @singleton class AutosaveCampaignV2Handler(AutosaveEmailV2Handler[EmailCampaign]): def __init__( self, email_repository: Repository[EmailCampaign], preview_cache: EmailPublicPreviewCache, stripo_client: CampaignStripoClientV2, ) -> None: super().__init__( email_repository=email_repository, preview_cache=preview_cache, stripo_client=stripo_client, ) def validate_email(self, email: EmailCampaign) -> None: if not email.is_draft: raise EmailCampaignMustBeDraftError