изменил логику рассылки

remotes/origin/HEAD
Slava Kyrachevsky 9 years ago
parent 560e8ae437
commit a85f66c9cb
  1. 37
      apps/emencia/django/newsletter/mailer.py
  2. 16
      apps/emencia/django/newsletter/management/commands/send_newsletter.py
  3. 4
      proj/settings.py

@ -168,11 +168,12 @@ class NewsLetterSender(object):
""" """
content_html = self.build_email_content(contact, announce_context) content_html = self.build_email_content(contact, announce_context)
content_html = content_html.format( if '{name}' in content_html:
**{ content_html = content_html.format(
'name': name or contact.first_name or contact.last_name or _(u'Подписчик') **{
} 'name': name or contact.first_name or contact.last_name or _(u'Подписчик')
) }
)
h = HTMLParser.HTMLParser() h = HTMLParser.HTMLParser()
content_html = h.unescape(content_html) content_html = h.unescape(content_html)
@ -349,7 +350,6 @@ class NewsLetterSender(object):
logo_path = default_storage.path('newsletter/images/no-logo.png') logo_path = default_storage.path('newsletter/images/no-logo.png')
elif logo and not logo_path: elif logo and not logo_path:
logo_path = logo.path logo_path = logo.path
print(logo, logo_path, obj)
try: try:
ctype, encoding = mimetypes.guess_type(logo_path) ctype, encoding = mimetypes.guess_type(logo_path)
@ -646,16 +646,18 @@ class Mailer(NewsLetterSender):
expedition_list = self.expedition_list expedition_list = self.expedition_list
number_of_recipients = len(expedition_list) # number_of_recipients = len(expedition_list)
if self.verbose: # if self.verbose:
print '%i emails will be sent' % number_of_recipients # print '%i emails will be sent' % number_of_recipients
i = 1 # FIXME: Временно сделана отправка только 1 письма.
for contact in expedition_list: # См FIXME в команде send_newsletter
for i, contact in enumerate(expedition_list, 1):
print 'sending to contact id:', contact.pk
send = True send = True
if self.verbose: # if self.verbose:
print '- Processing %s/%s (%s)' % ( # print '- Processing %s/%s (%s)' % (
i, number_of_recipients, contact.pk) # i, number_of_recipients, contact.pk)
# #
self.build_preheader_ctx(contact) self.build_preheader_ctx(contact)
@ -697,8 +699,6 @@ class Mailer(NewsLetterSender):
self.smtp.quit() self.smtp.quit()
self.smtp_connect() self.smtp_connect()
i += 1
# маркируем оставшиеся контакты на второй этап # маркируем оставшиеся контакты на второй этап
self.mark_contacts_for_second_stage() self.mark_contacts_for_second_stage()
@ -720,10 +720,13 @@ class Mailer(NewsLetterSender):
return [] return []
if self.newsletter.dailymail and not self.test: if self.newsletter.dailymail and not self.test:
return self.newsletter.get_dailymail_subscribers() # FIXME: врменно добавил жёсткий срез для отправки 1 письма
return self.newsletter.get_dailymail_subscribers()[:1]
qs = super(Mailer, self).expedition_list qs = super(Mailer, self).expedition_list
# FIXME: врменно добавил жёсткий срез для отправки 1 письма
self.credits = 1
qs = qs[:self.credits] qs = qs[:self.credits]
if self.test: if self.test:

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""Command for sending the newsletter""" """Command for sending the newsletter"""
from datetime import datetime, timedelta from datetime import datetime, timedelta
from time import sleep from time import sleep
@ -20,12 +21,15 @@ class Command(NoArgsCommand):
self.verbose = int(options['verbosity']) self.verbose = int(options['verbosity'])
activate(settings.LANGUAGE_CODE) activate(settings.LANGUAGE_CODE)
if SEND_HOUR_LOOP: # FIXME: временно делаем одну отправку и завершаем.
while self.end_time > datetime.now(): # Это сделано для того, чтобы отправка писем была более контролируемая
self.send() self.send()
sleep(30) # if SEND_HOUR_LOOP:
else: # while self.end_time > datetime.now():
self.send() # self.send()
# sleep(30)
# else:
# self.send()
if self.verbose: if self.verbose:
print 'End session sending' print 'End session sending'

@ -417,7 +417,9 @@ CRONJOBS = [
('40 6 * * * ', 'django.core.management.call_command', ['newsletter_contacts_remove_notactivated']), ('40 6 * * * ', 'django.core.management.call_command', ['newsletter_contacts_remove_notactivated']),
('30 2 * * *', 'django.core.management.call_command', ['newsletter_create_dailymail']), ('30 2 * * *', 'django.core.management.call_command', ['newsletter_create_dailymail']),
('35 * * * *', 'django.core.management.call_command', ['send_newsletter']), # FIXME: команда временно переделана на отправку 1 письма.
# В свою очередь запуск по крону будет происходить допустим каждые 2 секунды
# ('35 * * * *', 'django.core.management.call_command', ['send_newsletter']),
('12 4 * * *', 'django.core.management.call_command', ['stats_daily']), ('12 4 * * *', 'django.core.management.call_command', ['stats_daily']),
('5 10 * * *', 'django.core.management.call_command', ['update_events_filter_fields']), ('5 10 * * *', 'django.core.management.call_command', ['update_events_filter_fields']),

Loading…
Cancel
Save