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.
39 lines
1.3 KiB
39 lines
1.3 KiB
"""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()
|
|
|