"""Command for sending the newsletter""" from datetime import datetime, timedelta from time import sleep from django.conf import settings from django.utils.translation import activate from django.core.management.base import NoArgsCommand from emencia.django.newsletter.settings import SEND_HOUR_LOOP from emencia.django.newsletter.mailer import Mailer from emencia.django.newsletter.models import Newsletter class Command(NoArgsCommand): """Send the newsletter in queue""" help = 'Send the newsletter in queue' def handle_noargs(self, **options): self.end_time = datetime.now() + timedelta(minutes=30) self.verbose = int(options['verbosity']) activate(settings.LANGUAGE_CODE) if SEND_HOUR_LOOP: while self.end_time > datetime.now(): self.send() sleep(30) else: self.send() if self.verbose: print 'End session sending' def send(self): for newsletter in Newsletter.objects.exclude( status__in=[Newsletter.DRAFT, Newsletter.SENT, Newsletter.CANCELED]): mailer = Mailer(newsletter, verbose=self.verbose) if mailer.can_send: mailer.run()