You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

43 lines
1.5 KiB

# -*- 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()