# -*- 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.utils import timezone 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 (%s)' % timezone.now() 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()