oacpl/newsletters/management/commands/sendnewsletters.py

25 lines
1.0 KiB
Python
Raw Normal View History

2017-09-15 16:30:20 -04:00
from django.db.models import Q
from django.core import mail
from django.core.management.base import BaseCommand
from django.utils import timezone
from django.utils.html import strip_tags
from OACPL import settings
from newsletters.models import Newsletter, Subscriber
class Command(BaseCommand):
help = 'Send out newsletter emails to subscribers'
def handle(self, *args, **options):
newsletters = Newsletter.objects.filter(Q(sent=False) & Q(publish__lte=timezone.now()))
subscribers = Subscriber.objects.all().values_list('email', flat=True)
print(f'Found {len(newsletters)} unsent newsletters')
print(f'Found {len(subscribers)} subscribers')
for newsletter in newsletters:
print(f'Sending newsletter: "{newsletter.subject}"')
mail.send_mail(newsletter.subject, strip_tags(newsletter.body), settings.EMAIL_HOST_USER, subscribers, html_message=newsletter.body)
newsletter.sent = True
newsletter.save()
print('Complete!')