Evgenia newsletter fix

remotes/origin/1203
Nazar Kotjuk 10 years ago
parent b6de05dc0e
commit b8ff4735c2
  1. 15
      emencia/django/newsletter/management/commands/newsletter_contacts_remove_notactivated.py
  2. 8
      emencia/django/newsletter/management/commands/newsletter_create_announce.py
  3. 6
      emencia/django/newsletter/models.py
  4. 2
      emencia/django/newsletter/settings.py
  5. 4
      emencia/django/newsletter/templates/newsletter/announce_template.html
  6. 2
      emencia/django/newsletter/views/admin_views.py
  7. 6
      emencia/django/newsletter/views/mailing_list.py
  8. 3
      templates/admin/newsletters/contact_list.html
  9. 4
      templates/client/accounts/feed.html
  10. 13
      templates/client/accounts/settings.html
  11. 36
      templates/client/newsletters/activation_complete.html
  12. 6
      templates/client/newsletters/unsubscribe_form.html

@ -0,0 +1,15 @@
from datetime import timedelta, datetime
from emencia.django.newsletter.settings import REMOVE_INACTIVATED_CONTACTS_DAYS
from django.core.management.base import NoArgsCommand
from emencia.django.newsletter.models import Contact
class Command(NoArgsCommand):
"""
remove not activated contacts
"""
help = 'create the announce every week.'
def handle(self, *args, **options):
d = datetime.now() - timedelta(days=REMOVE_INACTIVATED_CONTACTS_DAYS)
Contact.objects.filter(activated=False, creation_date__lte=d).delete()

@ -1,11 +1,7 @@
"""Command for sending the newsletter"""
from datetime import date, timedelta
from django.conf import settings
from django.utils.translation import activate
from django.core.management.base import NoArgsCommand
from emencia.django.newsletter.mailer import Mailer
from emencia.django.newsletter.models import Newsletter, MailingList
from emencia.django.newsletter.models import MailingList
class Command(NoArgsCommand):
@ -14,5 +10,5 @@ class Command(NoArgsCommand):
def handle(self, *args, **options):
announce_list = MailingList.objects.get(id=1)
day = date.today()# + timedelta(days=1)
day = date.today() - timedelta(days=2)
announce_list.generate_announce_newsletter(day)

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
"""Models for emencia.django.newsletter"""
from smtplib import SMTP
from smtplib import SMTPHeloError
from datetime import datetime
from datetime import timedelta
from email.MIMEImage import MIMEImage
@ -29,6 +28,7 @@ from emencia.django.newsletter.settings import DEFAULT_HEADER_SENDER
from emencia.django.newsletter.settings import ACTIVATION_SUBJECT, ACTIVATION_TEMPLATE, DEFAULT_SMPTSERVER_ID
from emencia.django.newsletter.utils.vcard import vcard_contact_export
from emencia.django.newsletter.utils import make_activation_code
from functions.form_check import translit_with_separator
@ -298,10 +298,10 @@ class MailingList(models.Model):
# simple data
sending_date = day + timedelta(days=1)
start_sending_time = datetime.combine(sending_date, datetime.min.time())
title = u'announce_%s'%sending_date.strftime('%Y_%m_%y')
title = u'Анонс событий на %s' % sending_date.strftime('%Y-%m-%y')
newsletter = Newsletter(status=Newsletter.WAITING, sending_date=start_sending_time,
title=title, mailing_list=self, slug=title)
title=title, mailing_list=self, slug=translit_with_separator(title))
newsletter.save()
# add default attacments copied from default announce newsletter

@ -43,3 +43,5 @@ ACTIVATION_SUBJECT = 'client/newsletters/activation_subject.txt'
ACTIVATION_TEMPLATE = 'client/newsletters/activation_template.html'
DEFAULT_SMPTSERVER_ID = 1
REMOVE_INACTIVATED_CONTACTS_DAYS = 3

@ -52,7 +52,7 @@
</td>
<td style="padding: 15px 15px 15px 0; border-bottom: 1px dotted #cccccc;">
<h2 style="margin: 0 0 5px; font-family: Tahoma, Arial, sans-serif; font-size: 18px; line-height: 21px;"><a style="color: #464646; text-decoration: none;" href="http://{{ domain }}{{ event.get_permanent_url }}">{{ event.name }}</a></h2>
<p style="margin: 0 0 7px; font-size: 12px; line-height: 15px; color: #a2a2a2"><a style="color: #a2a2a2; text-decoration: none;" href="http://{{ domain }}{{ event.get_permanent_url }}">{{ obj.main_title|safe }}</a></p>
<p style="margin: 0 0 7px; font-size: 12px; line-height: 15px; color: #a2a2a2"><a style="color: #a2a2a2; text-decoration: none;" href="http://{{ domain }}{{ event.get_permanent_url }}">{{ event.main_title|safe }}</a></p>
<a class="button" style="display: inline-block; padding: 4px 10px 3px; text-decoration: none; color: #ff6600; font-size: 11px; font-weight: bold; line-height: 14px; border: 1px solid #feb17d; text-transform: uppercase; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px;" href="http://{{ domain }}{{ event.get_permanent_url }}">добавить в расписание</a>
<div class="addr" style="margin-top: 10px; font-size: 13px; line-height: 15px;"><img src="cid:pin" width="10" height="15" alt="" style="vertical-align: middle; margin-top: -1px;" /> {{ event.country.name }}, {{ event.city.name }}{% if event.place %}, {{ event.place.name }}{% endif %}</div>
</td>
@ -65,7 +65,7 @@
</table>
<div class="more" style="text-align: center;">
<a class="button" style="display: inline-block; padding: 4px 10px 3px; text-decoration: none; color: #2592c5; font-size: 11px; font-weight: bold; line-height: 14px; border: 1px solid #90c7e0; text-transform: uppercase; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 336px;" href="/expo/">посмотреть все события</a>
<a class="button" style="display: inline-block; padding: 4px 10px 3px; text-decoration: none; color: #2592c5; font-size: 11px; font-weight: bold; line-height: 14px; border: 1px solid #90c7e0; text-transform: uppercase; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 336px;" href="/expo/search/?{% for th in themes %}th={{ th.id }}&{% endfor %}{% if place %}co={{ place.id }}&{% endif %}">посмотреть все события</a>
</div>
</td>

@ -56,7 +56,7 @@ class ContactList(FormView):
class DeleteContact(DeleteView):
model = ContactSettings
model = Contact
success_url = reverse_lazy('newsletters_contact_list')
template_name = 'admin/newsletters/confirm_delete.html'

@ -60,7 +60,6 @@ class UnsubscribeView(DetailView):
def get_object(self, queryset=None):
return get_object_or_404(Newsletter, slug=self.kwargs.get('slug'))
def get_announce_form(self):
contact = untokenize(self.kwargs.get('uidb36'), self.kwargs.get('token'))
self.contact= contact
@ -83,7 +82,6 @@ class UnsubscribeView(DetailView):
form = SubscribeSettingsForm(instance=setting, initial=initial)
return form
def get_context_data(self, **kwargs):
context = super(UnsubscribeView, self).get_context_data(**kwargs)
context['subscribe'] = self.get_announce_form()
@ -107,8 +105,12 @@ def unsubscription_handle(request):
setting.save()
form.save_m2m()
form.save_additional_fields(setting)
if form.cleaned_data.get('get_announce'):
messages.add_message(request, messages.INFO, u'Настройки вашой подписки успешно сохранены')
else:
contact.subscriber = False
contact.save()
return HttpResponseRedirect(reverse_lazy('newsletter_mailinglist_unsubscribe_success'))

@ -104,6 +104,7 @@
<th>Дата создания</th>
<th>Дата редактирования</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
@ -121,6 +122,8 @@
<td>{{ item.modification_date|date:"Y-m-d H:i" }}</td>
<td><a href="{% url 'newsletters_contact_update' item.contactsettings.id %}">Изменить</a></td>
<td><a href="{% url 'newsletters_contact_delete' item.id %}">Удалить</a></td>
</tr>
{% endfor %}
</tbody>

@ -52,11 +52,11 @@
<div class="search-modal-body">
{% if search_form.th %}
{% include 'client/popups/theme.html' with search_form=search_form filter="filter-" formId="filter-pwSubj" selectedItemTemplate="filter-subj-selected" autoCompleteId="filter-subj-complete-block" filterInputId="filter-subj-fliter-input" selectedItemsContainer="filter-csb-subj-selected-items" subjectTriggerWrapId="filter-subj-checks" exhibitionCheck="filter-exhibition-check" conferenceCheck="filter-conference-check" prefix="f-s-" submitText="{% trans 'Применить' %}" %}
{% include 'client/popups/theme.html' with search_form=search_form filter="filter-" formId="filter-pwSubj" selectedItemTemplate="filter-subj-selected" autoCompleteId="filter-subj-complete-block" filterInputId="filter-subj-fliter-input" selectedItemsContainer="filter-csb-subj-selected-items" subjectTriggerWrapId="filter-subj-checks" exhibitionCheck="filter-exhibition-check" conferenceCheck="filter-conference-check" prefix="f-s-" submitText="Применить" %}
{% endif %}
{% if search_form.area %}
{% include 'client/popups/place.html' with search_form=search_form filter="filter-" formId="filter-pwPlace" selectedItemTemplate="filter-csb-selected" autoCompleteId="filter-place-complete-block" filterInputId="filter-place-filter-input" selectedItemsContainer="filter-csb-selected-items" prefix="f-p-" submitText="{% trans 'Применить' %}" %}
{% include 'client/popups/place.html' with search_form=search_form filter="filter-" formId="filter-pwPlace" selectedItemTemplate="filter-csb-selected" autoCompleteId="filter-place-complete-block" filterInputId="filter-place-filter-input" selectedItemsContainer="filter-csb-selected-items" prefix="f-p-" submitText="Применить" %}
{% endif %}
</div>

@ -128,7 +128,7 @@
<div class="mf-subj-checks-title">
<label class="check">
{{ subscribe.get_announce }}
Получать анонсы</label>
{% trans 'Получать анонсы' %}</label>
</div>
<div class="mf-announces-body">
@ -169,21 +169,14 @@
</div>
</div>
<hr />
<div class="mf-line">
<label class="check">{{ subscribe.europe_expo }}{{ subscribe.europe_expo.label }}</label>
<label class="check">{{ subscribe.asia_expo }}{{ subscribe.asia_expo.label }}</label>
<label class="check">{{ subscribe.na_expo }}{{ subscribe.na_expo.label }}</label>
</div>
<hr />
<div class="mf-line">
<label class="check">{{ subscribe.exponent_practicum }}«Практикум экспонента»<i>(учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях)</i></label>
<label class="check">{{ subscribe.exponent_practicum }}{% trans '«Практикум экспонента»' %} <i>({% trans 'учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях' %})</i></label>
</div>
<div class="mf-line">
<label class="check">{{ subscribe.organiser_practicum }}«Практикум организатора событий» <i>(Создаем, наполняем и продвигаем собственные ивэнты)</i></label>
<label class="check">{{ subscribe.organiser_practicum }}{% trans '«Практикум организатора событий»' %} <i>({% trans 'Создаем, наполняем и продвигаем собственные ивэнты' %})</i></label>
</div>
</li>

@ -1,18 +1,34 @@
{% extends "base_catalog.html" %}
{% load i18n %}
{% block page_title %}
<div class="page-title">
<h1>{% trans "Успешная подписка" %}</h1>
</div>
{% endblock %}
{% block page_body %}
<div class="m-article event-page">
<div class="item-wrap event clearfix" style="padding-left: 10px;">
<div class="i-info">
<header>
<div class="i-title">
{% trans 'Ваша подписка активирована!' %}
</div>
</header>
<div class="i-address">
<header>
<div class="address">
<p>Мы очень рады, что теперь каждую среду вместе с другими профессионалами бизнеса Вы будете получать анонсы из календаря событий Expomap. Важные выставки и конференции не останутся незамеченными!</p>
<p>Вы всегда можете изменить параметры своей подписки:</p>
<ul style="list-style-type: none;">
<li>- добавить или изменить тематики;</li>
<li>- применить гео-фильтры (например, получать выставки только в г. Москва);</li>
<li>- изменить периодичность получения писем;</li>
<li>- отписаться! =(</li>
</ul>
{% block content_list %}
<div class="m-article">
<div class="item-wrap event clearfix">
<p>{% trans "Теперь вы успешно подписаны" %}</p>
<p>Мы будем рады любым Вашим пожелания по улучшению нашей рассылки - можете отправлять их на адрес evm@expomap.ru</p>
</div>
</header>
</div>
</div>
</div>
</div>
{% endblock %}

@ -68,13 +68,7 @@
</div>
</div>
<hr />
<div class="mf-line">
<label class="check">{{ subscribe.europe_expo }}{{ subscribe.europe_expo.label }}</label>
<label class="check">{{ subscribe.asia_expo }}{{ subscribe.asia_expo.label }}</label>
<label class="check">{{ subscribe.na_expo }}{{ subscribe.na_expo.label }}</label>
</div>
<hr />
<div class="mf-line">

Loading…
Cancel
Save