Template
Extract always-on public/portal/UTM plus optional email_sms, directmail, blog, payments, social, and social_ai so new client sites can be bootstrapped from this seed. Refs #1 Refs #2 Co-authored-by: Cursor <cursoragent@cursor.com>
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
"""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()
|