1463: Этап №5: Рассылка - Прехеадер и Тема письма

remotes/origin/stage5
Alexander Burdeiny 10 years ago
parent d7b0973ca3
commit c2e3b5b551
  1. 23
      emencia/django/newsletter/mailer.py
  2. 3
      fabfile.py
  3. 7
      templates/admin/newsletters/newsletter_object.html

@ -12,6 +12,8 @@ from StringIO import StringIO
from datetime import datetime
from datetime import timedelta
from smtplib import SMTPRecipientsRefused
from pymorphy2 import MorphAnalyzer
morph = MorphAnalyzer()
try:
from email.mime.multipart import MIMEMultipart
@ -307,16 +309,27 @@ class NewsLetterSender(object):
# include preheader
if self.newsletter.preheader:
preheader_ctx = {
'name': contact.first_name or contact.last_name,
'subscribe_themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)]),
}
preheader = self.newsletter.preheader.format(**preheader_ctx)
preheader = self.newsletter.preheader.format(**self.build_preheader_ctx(contact))
preheader_html = render_to_string('newsletter/newsletter_preheader.html', {'preheader': preheader})
content = body_insertion(content, preheader_html)
return smart_unicode(content)
def build_preheader_ctx(self, contact):
t_add = ''
count = contact.contactsettings.theme.count()
if count > 3:
count -= 3
theme_word = morph.parse(u'тема')[0]
t_add = _(u' и еще {count} {theme_word}').format(
count=count,
theme_word=theme_word.t.make_agree_with_number(count).word,
)
return {
'name': contact.first_name or contact.last_name,
'themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)[:3]]) + t_add,
}
def update_newsletter_status(self):
"""Update the status of the newsletter"""
if self.test:

3
fabfile.py vendored

@ -159,6 +159,8 @@ def t1456():
def t1463():
with cd(REMOTE_HOME_DIR):
run('python manage.py migrate newsletter')
run('pip install pymorphy2[fast]')
run('pip install -U pymorphy2-dicts-ru')
@stage(5)
@ -173,6 +175,7 @@ def update_crontab():
run('python manage.py crontab remove')
run('python manage.py crontab add')
# def stage3_pre_final():
# with cd(REMOTE_HOME_DIR):
# run('pip install pandas')

@ -60,6 +60,13 @@
<div class="box-header well">
<h2><i class="icon-pencil"></i>{% if object %}{% trans "Изменения" %}{% else %}{% trans "Создание" %}{% endif %} {% trans "рассылки" %}</h2>
</div>
<div class="box-content">
<i class="icon-info-sign"></i>{% trans "Доступные параметры для прехедера" %}:
<p>{% trans "{name} - имя пользователя" %}</p>
<p>{% trans "{themes} - темы на которые пользователь подписан (первые 3 + кол-во оставшихся)" %}</p>
</div>
<div class="box-content">
{% for field in form %}
<div class="control-group {% if field.errors %}error{% endif %}">

Loading…
Cancel
Save