From c2e3b5b5519b0496388d0f3ff7aa457f5f7fd67c Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Tue, 19 Jul 2016 13:57:17 +0300 Subject: [PATCH] =?UTF-8?q?1463:=20=D0=AD=D1=82=D0=B0=D0=BF=20=E2=84=965:?= =?UTF-8?q?=20=D0=A0=D0=B0=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20-=20?= =?UTF-8?q?=D0=9F=D1=80=D0=B5=D1=85=D0=B5=D0=B0=D0=B4=D0=B5=D1=80=20=D0=B8?= =?UTF-8?q?=20=D0=A2=D0=B5=D0=BC=D0=B0=20=D0=BF=D0=B8=D1=81=D1=8C=D0=BC?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emencia/django/newsletter/mailer.py | 23 +++++++++++++++---- fabfile.py | 3 +++ .../admin/newsletters/newsletter_object.html | 7 ++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index b4d062f6..172a52a4 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -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: diff --git a/fabfile.py b/fabfile.py index 18240022..0aabeca2 100644 --- a/fabfile.py +++ b/fabfile.py @@ -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') diff --git a/templates/admin/newsletters/newsletter_object.html b/templates/admin/newsletters/newsletter_object.html index d00169e0..838228de 100644 --- a/templates/admin/newsletters/newsletter_object.html +++ b/templates/admin/newsletters/newsletter_object.html @@ -60,6 +60,13 @@

{% if object %}{% trans "Изменения" %}{% else %}{% trans "Создание" %}{% endif %} {% trans "рассылки" %}

+ +
+ {% trans "Доступные параметры для прехедера" %}: +

{% trans "{name} - имя пользователя" %}

+

{% trans "{themes} - темы на которые пользователь подписан (первые 3 + кол-во оставшихся)" %}

+
+
{% for field in form %}