"""Pluggable postcard providers.""" from dataclasses import dataclass from typing import Protocol from django.conf import settings @dataclass class PostcardResult: provider_id: str class PostcardProvider(Protocol): name: str def send_postcard(self, message) -> PostcardResult: ... def get_status(self, provider_id: str) -> str: ... def get_postcard_provider() -> PostcardProvider: name = (settings.POSTCARD_PROVIDER or "pcm").lower() if name == "pcm": from directmail.providers.postcard.pcm import PcmProvider return PcmProvider() if name == "click2mail": from directmail.providers.postcard.click2mail import Click2MailProvider return Click2MailProvider() if name == "postgrid": from directmail.providers.postcard.postgrid import PostGridProvider return PostGridProvider() if name == "lob": from directmail.providers.postcard.lob import LobProvider return LobProvider() from directmail.providers.postcard.pcm import PcmProvider return PcmProvider()