# -*- coding: utf-8 -*- """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) # FIXME: временно делаем одну отправку и завершаем. # Это сделано для того, чтобы отправка писем была более контролируемая self.send() # 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()