Coverage for website/newsletters/emails.py: 79.17%
22 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1import logging
2from smtplib import SMTPException
4from django.conf import settings
5from django.utils import timezone
6from django.utils.timezone import make_aware
8from newsletters import services
9from partners.models import Partner
10from utils.snippets import send_email
12logger = logging.getLogger(__name__)
15def send_newsletter(newsletter):
16 """Send the newsletter as HTML and plaintext email."""
17 events = None
18 if newsletter.date: 18 ↛ 19line 18 didn't jump to line 19
19 datetime = (
20 make_aware(
21 timezone.datetime(
22 year=newsletter.date.year,
23 month=newsletter.date.month,
24 day=newsletter.date.day,
25 )
26 )
27 if newsletter.date
28 else None
29 )
30 events = services.get_agenda(datetime)
32 main_partner = Partner.objects.filter(is_main_partner=True).first()
33 local_partners = services.split_local_partners()
35 context = {
36 "newsletter": newsletter,
37 "agenda_events": events,
38 "main_partner": main_partner,
39 "local_partners": local_partners,
40 }
42 try:
43 send_email(
44 to=[f"newsletter@{settings.GSUITE_DOMAIN}"],
45 subject=newsletter.title,
46 txt_template="newsletters/email.txt",
47 html_template="newsletters/email.html",
48 from_email=settings.NEWSLETTER_FROM_ADDRESS,
49 context=context,
50 )
52 logger.info("Sent newsletter")
53 except SMTPException:
54 logger.exception("Failed to send the newsletter")