|
|
|
@ -106,15 +106,12 @@ class NewsLetterSender(object): |
|
|
|
self.themes = dict(Theme.objects.language('ru').all().values_list('pk', 'name')) |
|
|
|
self.themes = dict(Theme.objects.language('ru').all().values_list('pk', 'name')) |
|
|
|
|
|
|
|
|
|
|
|
self.newsletter_template2 = None |
|
|
|
self.newsletter_template2 = None |
|
|
|
self.title_template2 = None |
|
|
|
|
|
|
|
self.ab_state = Newsletter.A |
|
|
|
self.ab_state = Newsletter.A |
|
|
|
if newsletter.ab_testing == True: |
|
|
|
if newsletter.ab_testing == True: |
|
|
|
self.newsletter_template2 = Template(self.newsletter.content2) |
|
|
|
self.newsletter_template2 = Template(self.newsletter.content2) |
|
|
|
self.title_template2 = Template(self.newsletter.title2) |
|
|
|
|
|
|
|
if self.newsletter.ab_final_stage: |
|
|
|
if self.newsletter.ab_final_stage: |
|
|
|
self.ab_state = self.newsletter.ab_final_choice |
|
|
|
self.ab_state = self.newsletter.ab_final_choice |
|
|
|
|
|
|
|
|
|
|
|
self.title_template = Template(self.newsletter.title) |
|
|
|
|
|
|
|
# |
|
|
|
# |
|
|
|
self.announce = self.newsletter.mailing_list.announce |
|
|
|
self.announce = self.newsletter.mailing_list.announce |
|
|
|
|
|
|
|
|
|
|
|
@ -266,15 +263,13 @@ class NewsLetterSender(object): |
|
|
|
|
|
|
|
|
|
|
|
def build_title_content(self, contact): |
|
|
|
def build_title_content(self, contact): |
|
|
|
"""Generate the email title for a contact""" |
|
|
|
"""Generate the email title for a contact""" |
|
|
|
context = Context({'contact': contact, |
|
|
|
# context = Context({'contact': contact, |
|
|
|
'UNIQUE_KEY': ''.join(sample(UNIQUE_KEY_CHAR_SET, |
|
|
|
# 'UNIQUE_KEY': ''.join(sample(UNIQUE_KEY_CHAR_SET, |
|
|
|
UNIQUE_KEY_LENGTH))}) |
|
|
|
# UNIQUE_KEY_LENGTH))}) |
|
|
|
if self.newsletter.ab_testing and self.ab_state == Newsletter.A: |
|
|
|
if not self.newsletter.ab_testing or (self.newsletter.ab_testing and self.ab_state == Newsletter.A): |
|
|
|
title = self.title_template.render(context) |
|
|
|
title = self.newsletter.title.format(**self.preheader_ctx) |
|
|
|
elif self.newsletter.ab_testing and self.ab_state == Newsletter.B: |
|
|
|
elif self.newsletter.ab_testing and self.ab_state == Newsletter.B: |
|
|
|
title = self.title_template2.render(context) |
|
|
|
title = self.newsletter.title2.format(**self.preheader_ctx) |
|
|
|
else: |
|
|
|
|
|
|
|
title = self.title_template.render(context) |
|
|
|
|
|
|
|
return title |
|
|
|
return title |
|
|
|
|
|
|
|
|
|
|
|
def build_email_content(self, contact, announce_context=None): |
|
|
|
def build_email_content(self, contact, announce_context=None): |
|
|
|
@ -316,9 +311,9 @@ class NewsLetterSender(object): |
|
|
|
# include preheader |
|
|
|
# include preheader |
|
|
|
if self.newsletter.preheader: |
|
|
|
if self.newsletter.preheader: |
|
|
|
if not self.newsletter.ab_testing or self.ab_state == Newsletter.A: |
|
|
|
if not self.newsletter.ab_testing or self.ab_state == Newsletter.A: |
|
|
|
preheader = self.newsletter.preheader.format(**self.build_preheader_ctx(contact)) |
|
|
|
preheader = self.newsletter.preheader.format(**self.preheader_ctx) |
|
|
|
else: |
|
|
|
else: |
|
|
|
preheader = self.newsletter.preheader2.format(**self.build_preheader_ctx(contact)) |
|
|
|
preheader = self.newsletter.preheader2.format(**self.preheader_ctx) |
|
|
|
preheader_html = render_to_string('newsletter/newsletter_preheader.html', {'preheader': preheader}) |
|
|
|
preheader_html = render_to_string('newsletter/newsletter_preheader.html', {'preheader': preheader}) |
|
|
|
content = body_insertion(content, preheader_html) |
|
|
|
content = body_insertion(content, preheader_html) |
|
|
|
|
|
|
|
|
|
|
|
@ -334,7 +329,7 @@ class NewsLetterSender(object): |
|
|
|
count=count, |
|
|
|
count=count, |
|
|
|
theme_word=theme_word.make_agree_with_number(count).word, |
|
|
|
theme_word=theme_word.make_agree_with_number(count).word, |
|
|
|
) |
|
|
|
) |
|
|
|
return { |
|
|
|
self.preheader_ctx = { |
|
|
|
'name': contact.first_name or contact.last_name or _(u'Подписчик'), |
|
|
|
'name': contact.first_name or contact.last_name or _(u'Подписчик'), |
|
|
|
'themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)[:3]]) + t_add, |
|
|
|
'themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)[:3]]) + t_add, |
|
|
|
} |
|
|
|
} |
|
|
|
@ -476,6 +471,8 @@ class Mailer(NewsLetterSender): |
|
|
|
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) |
|
|
|
# check if events for this newsletter exists |
|
|
|
# check if events for this newsletter exists |
|
|
|
announce_context = contact.get_announce_context() if self.announce else None |
|
|
|
announce_context = contact.get_announce_context() if self.announce else None |
|
|
|
if self.announce and not announce_context: |
|
|
|
if self.announce and not announce_context: |
|
|
|
|