mirror of
https://github.com/PostHog/posthog.git
synced 2024-11-28 18:26:15 +01:00
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
|
import uuid
|
||
|
from typing import List, Optional
|
||
|
|
||
|
import structlog
|
||
|
|
||
|
from ee.tasks.subscriptions.subscription_utils import UTM_TAGS_BASE
|
||
|
from posthog.email import EmailMessage
|
||
|
from posthog.models.exported_asset import ExportedAsset
|
||
|
from posthog.models.subscription import Subscription, get_unsubscribe_token
|
||
|
from posthog.utils import absolute_uri
|
||
|
|
||
|
logger = structlog.get_logger(__name__)
|
||
|
|
||
|
|
||
|
def send_email_subscription_report(
|
||
|
email: str,
|
||
|
subscription: Subscription,
|
||
|
assets: List[ExportedAsset],
|
||
|
invite_message: Optional[str] = None,
|
||
|
total_asset_count: Optional[int] = None,
|
||
|
) -> None:
|
||
|
utm_tags = f"{UTM_TAGS_BASE}&utm_medium=email"
|
||
|
|
||
|
inviter = subscription.created_by
|
||
|
is_invite = invite_message is not None
|
||
|
self_invite = inviter.email == email
|
||
|
|
||
|
subject = "Posthog Report"
|
||
|
|
||
|
resource_info = subscription.resource_info
|
||
|
if not resource_info:
|
||
|
raise NotImplementedError("This type of subscription resource is not supported")
|
||
|
|
||
|
subject = f"PostHog {resource_info.kind} report - {resource_info.name}"
|
||
|
campaign_key = f"{resource_info.kind.lower()}_subscription_report_{subscription.next_delivery_date.isoformat()}"
|
||
|
|
||
|
unsubscribe_url = absolute_uri(f"/unsubscribe?token={get_unsubscribe_token(subscription, email)}&{utm_tags}")
|
||
|
|
||
|
if is_invite:
|
||
|
if self_invite:
|
||
|
subject = f"You have been subscribed to a PostHog {resource_info.kind}"
|
||
|
else:
|
||
|
subject = f"{inviter.first_name or 'Someone'} subscribed you to a PostHog {resource_info.kind}"
|
||
|
campaign_key = f"{resource_info.kind.lower()}_subscription_new_{uuid.uuid4()}"
|
||
|
|
||
|
message = EmailMessage(
|
||
|
campaign_key=campaign_key,
|
||
|
subject=subject,
|
||
|
template_name="subscription_report",
|
||
|
template_context={
|
||
|
"images": [x.get_public_content_url() for x in assets],
|
||
|
"resource_noun": resource_info.kind,
|
||
|
"resource_name": resource_info.name,
|
||
|
"resource_url": f"{resource_info.url}?{utm_tags}",
|
||
|
"subscription_url": f"{subscription.url}?{utm_tags}",
|
||
|
"unsubscribe_url": unsubscribe_url,
|
||
|
"inviter": inviter if is_invite else None,
|
||
|
"self_invite": self_invite,
|
||
|
"invite_message": invite_message,
|
||
|
"total_asset_count": total_asset_count,
|
||
|
},
|
||
|
)
|
||
|
message.add_recipient(email=email)
|
||
|
message.send()
|