Coverage for polar/notifications/tasks/email.py: 44%

16 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 17:15 +0000

1from uuid import UUID 1a

2 

3import structlog 1a

4 

5from polar.email.sender import enqueue_email 1a

6from polar.notifications.service import notifications 1a

7from polar.worker import AsyncSessionMaker, TaskPriority, actor 1a

8 

9log = structlog.get_logger() 1a

10 

11 

12@actor(actor_name="notifications.send", priority=TaskPriority.LOW) 1a

13async def notifications_send(notification_id: UUID) -> None: 1a

14 async with AsyncSessionMaker() as session: 

15 notif = await notifications.get(session, notification_id) 

16 if not notif: 

17 log.warning("notifications.send.not_found") 

18 return 

19 

20 notification_type = notifications.parse_payload(notif) 

21 (subject, body) = notification_type.render() 

22 

23 enqueue_email( 

24 to_email_addr=notif.user.email, subject=subject, html_content=body 

25 )