Coverage for app/backend/src/couchers/email/dev.py: 100%
10 statements
« prev ^ index » next coverage.py v7.14.2, created at 2026-06-21 09:29 +0000
« prev ^ index » next coverage.py v7.14.2, created at 2026-06-21 09:29 +0000
1import logging
3from couchers.crypto import random_hex
4from couchers.models import Email
5from couchers.proto.internal import jobs_pb2
7logger = logging.getLogger(__name__)
10def print_dev_email(payload: jobs_pb2.SendEmailPayload) -> Email:
11 """
12 Generates a dummy Email object and prints the plain email contents to the logger
14 This allows developing easier by not having to spin up any email infrastructure, and it spits out login links, etc.
16 Returns a models.Email object that can be straight away added to the database.
17 """
18 message_id = random_hex()
20 logger.info("Dev email:")
21 logger.info(payload.plain)
23 return Email(
24 id=message_id,
25 sender_name=payload.sender_name,
26 sender_email=payload.sender_email,
27 recipient=payload.recipient,
28 subject=payload.subject,
29 plain=payload.plain,
30 html=payload.html,
31 list_unsubscribe_header=payload.list_unsubscribe_header,
32 source_data=payload.source_data,
33 )