настройка и подписка рассылки

remotes/origin/HEAD
Slava Kyrachevsky 9 years ago
parent 5d8fcf989d
commit 431362c918
  1. 11
      apps/accounts/views.py
  2. 9
      apps/emencia/django/newsletter/views/expo_views.py
  3. 259
      templates/client/accounts/mailing_settings.html
  4. 2
      templates/client/includes/header.html
  5. 59
      templates/client/newsletters/mailing_settings.html
  6. 107
      templates/client/newsletters/subcribe.html
  7. 1
      templates/client/popups/russia_cities.html

@ -117,7 +117,7 @@ class GetUserMixin(object):
class MailingSettings(GetUserMixin, ContextMixin, AjaxableResponseMixin, CreateUpdateView): class MailingSettings(GetUserMixin, ContextMixin, AjaxableResponseMixin, CreateUpdateView):
form_class = MailingSettingsForm form_class = MailingSettingsForm
template_name = 'client/accounts/mailing_settings.html' template_name = 'client/newsletters/mailing_settings.html'
success_url = reverse_lazy('accounts-mailing_settings') success_url = reverse_lazy('accounts-mailing_settings')
def get_success_url(self): def get_success_url(self):
@ -144,16 +144,9 @@ class MailingSettings(GetUserMixin, ContextMixin, AjaxableResponseMixin, CreateU
return instance return instance
def form_valid(self, form): def form_valid(self, form):
# print(form.cleaned_data)
# print(form.errors)
# print(self.request.POST)
# import pdb; pdb.set_trace()
return super(MailingSettings, self).form_valid(form) return super(MailingSettings, self).form_valid(form)
def form_invalid(self, form): def form_invalid(self, form):
# print(form.cleaned_data)
# print(form.errors)
# print(self.request.POST)
return super(MailingSettings, self).form_invalid(form) return super(MailingSettings, self).form_invalid(form)
@ -614,4 +607,4 @@ class UserSubscribeThemesTagsView(GetUserMixin, TemplateView):
def render_to_response(self, context, **response_kwargs): def render_to_response(self, context, **response_kwargs):
context.pop('view') context.pop('view')
return HttpResponse(json.dumps(context), content_type=self.content_type) return HttpResponse(json.dumps(context), content_type=self.content_type)

@ -19,7 +19,7 @@ from city.models import City
class SubscribeView(GetUserMixin, ContextMixin, FormView): class SubscribeView(GetUserMixin, ContextMixin, FormView):
form_class = ContactForm form_class = ContactForm
template_name = 'client/newsletters/subcribe.html' template_name = 'client/newsletters/mailing_settings.html'
success_url = reverse_lazy('subscription_activation_send') success_url = reverse_lazy('subscription_activation_send')
def get_form(self, form_class): def get_form(self, form_class):
@ -57,7 +57,7 @@ class SubscribeView(GetUserMixin, ContextMixin, FormView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
ctx = super(SubscribeView, self).get_context_data(**kwargs) ctx = super(SubscribeView, self).get_context_data(**kwargs)
ctx['mailsettings_object'] = self.get_mailsettings_object() ctx['object'] = self.get_mailsettings_object()
ctx['mailsettings_form'] = MailingSettingsForm( ctx['mailsettings_form'] = MailingSettingsForm(
instance=self.get_user() instance=self.get_user()
) )
@ -83,7 +83,10 @@ class SubscribeView(GetUserMixin, ContextMixin, FormView):
instance.themes.values_list('pk', flat=True)), instance.themes.values_list('pk', flat=True)),
'contact': instance, 'contact': instance,
}) })
if not instance.subscriber: if self.request.GET.get('unsibscribe') and instance.subscriber:
instance.unsubscribe()
self.extra_ctx.update({'unsubscribe_success': True})
elif not instance.subscriber:
self.extra_ctx.update({'unsubscribed': True}) self.extra_ctx.update({'unsubscribed': True})
return instance return instance

@ -1,259 +0,0 @@
{% load static i18n %}
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{% trans 'Настройте рассылку от Expomap' %}</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'mailing_settings/css/main.css' %}">
<link rel="stylesheet" href="{% static 'mailing_settings/css/form.css' %}">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" defer></script>
</head>
<body>
{% if user.is_authenticated %}
<header class="page_header">
<div class="container">
<div class="logo_block">
<a href="/"><img src="{% static 'mailing_settings/images/logo.png' %}" alt="Expomap"></a>
<a href="/" class="back_to_site">expomap.ru <span>&#8250;</span></a>
</div>
<h1>{% trans 'Настройте рассылку от Expomap' %}</h1>
<p>{% trans 'для' %} <span>{{ contact.email }}</span></p>
</div>
</header>
{% else %}
<header id="pr-header">
<div class="pr-center">
<div class="pr-header-box">
<a class="pr-phone" href="tel:+7 (499) 999-12-07">+7 (499) 999-12-07</a>
<ul class="pr-social">
<li><a href="https://instagram.com/expomap/"><img src="{% static 'mailing_settings/images/sm-icon-inst.png' %}" /></a></li>
<li><a href="https://www.youtube.com/user/expomaptv"><img src="{% static 'mailing_settings/images/sm-icon-youtube.png' %}" /></a></li>
<li><a href="https://www.facebook.com/Expomap"><img src="{% static 'mailing_settings/images/sm-icon-fb.png' %}" /></a></li>
<li><a href="http://www.linkedin.com/company/expomap-ru/"><img src="{% static 'mailing_settings/images/sm-icon-lin.png' %}" /></a></li>
<li><a href="http://vk.com/expomap"><img src="{% static 'mailing_settings/images/sm-icon-vk.png' %}" /></a></li>
<li><a href="https://twitter.com/expomap_ru"><img src="{% static 'mailing_settings/images/sm-icon-twit.png' %}" /></a></li>
</ul>
</div>
<strong class="pr-logo"><a href="/">Expomap</a></strong>
<span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span>
</div>
</header>
{% endif %}
<form action="." method="post" id="mailing_settings_form">
{% csrf_token %}
{% if not user.is_authenticated %}
<section id="pr-promo">
<div class="pr-center">
<h1>{% trans 'Анонсы выставок' %} <br />{% trans 'и конференций на ваш e-mail' %}</h1>
<h2>{% trans 'Хотите быть в курсе событий?' %}</h2>
<div class="pr-promo-text">
<p>{% trans 'Получайте анонсы выставок и конференций на email каждую среду. Вы можете выбрать несколько интересующих вас тематических направлений.' %} <a target="_blank" href="/newsletters/test-letter/">{% trans 'Пример письма' %}</a></p>
</div>
{# <form id="form1" action="#" class="pr-form" method="post">{% csrf_token %}#}
<div class="pr-form">
<fieldset>
<div class="pr-row">
<span class="pr-input pr-name">{{ form.first_name }}</span>
<span class="pr-input pr-email" >{{ form.email }}</span>
</div>
<button>{% trans 'Подписаться' %}</button>
</fieldset>
</div>
{# </form>#}
</div>
</section>
{% endif %}
<div class="themes_block">
<div class="container">
<h2>{% trans 'Какие события включать в ваше письмо?' %}</h2>
<div class="columns">
<div class="column">
<h3>{% trans 'Ваши темы:' %}</h3>
<ul id="selected_themes" class="selected selected_themes">
{% for theme in object.themes.all %}
<li data-id="{{ theme.pk }}" data-type="th" class="theme_{{ theme.pk }}">
<input type="hidden" name="th" value="{{ theme.pk }}">
{{ theme }}
<a href="#">&times;</a>
</li>
{% endfor %}
{% for tag in object.tags.all %}
<li data-id="{{ tag.pk }}" data-type="tg" data-parent="{{ tag.theme.pk }}" class="tag_{{ tag.pk }}">
<input type="hidden" name="tg" value="{{ tag.pk }}">
{{ tag }}
<a href="#">&times;</a>
</li>
{% endfor %}
</ul>
<a href="#search-modal" class="modal_trigger themes_trigger">{% trans 'Уточнить темы' %}</a>
</div>
<div class="column">
<h3>{% trans 'Ваши гео-фильтры:' %}</h3>
<ul class="geo_filters">
<li>
<label>
{{ form.moscow }}
<span class="label moscow">
<i class="fa fa-map-marker"></i>
{{ form.moscow.label }}
</span>
<span class="geo_checkbox"></span>
</label>
</li>
<li>
<label>
{{ form.russia }}
<span class="label rf">
<i class="fa fa-map-marker"></i>
{{ form.russia.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#cities-modal" class="modal_trigger">{% trans 'Выбрать города' %}</a>
<ul id="selected_cities" class="selected"></ul>
{{ form.r_cities }}
</li>
<li>
<label>
{{ form.foreign }}
<span class="label foreign">
<i class="fa fa-map-marker"></i>
{{ form.foreign.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#countries_modal" class="modal_trigger">{% trans 'Выбрать страны' %}</a>
<ul id="selected_areas" class="selected"></ul>
<ul id="selected_countries" class="selected"></ul>
{{ form.area }}
{{ form.co }}
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="subjects_block">
<div class="container">
<h2>{% trans 'Включать ли новости / обзоры / статьи в письмо?' %}</h2>
<div class="columns">
<div class="column">
{{ form.content_news }}
{{ form.content_news.label_tag }}
<p>{% trans "Получайте новости выставок и конференций по выбранным тематикам" %}</p>
</div>
<div class="column">
{{ form.content_overview }}
{{ form.content_overview.label_tag }}
<p>{% trans "Практические материалы, интервью, кейсы, которые помогут эффективно участвовать в выставках" %}</p>
</div>
<div class="column">
{{ form.content_articles }}
{{ form.content_articles.label_tag }}
<p>{% trans "Блог о том, как создавать и продвигать крутые event`ы" %}</p>
</div>
</div>
</div>
</div>
<div class="period_block">
<div class="container">
<h2>{% trans 'Регулярность получения писем' %}</h2>
<div class="columns">
<div class="column periodic">
<ul>
{% for field in form.periodic %}
<li>
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
</li>
{% endfor %}
</ul>
</div>
<div class="column mailing_day">
{% for field in form.periodic_day %}
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="button_block">
<div class="container">
<div class="tos">
<strong>{% trans 'Нажимая «Подписаться», вы соглашаетесь получать' %} <br /> {% trans 'материалы компании Expomap на свой электронный адрес' %} </strong>
<a href="{% url 'termsofuse' %}" style="color:#a2a2a2;">{% trans "Пользовательское соглашение" %}</a>
</div>
<button type="submit">{% trans "Сохранить" %}</button>
<a href="{% url 'accounts-mailing_settings' %}?unsibscribe=1">{% trans 'Не хочу быть в курсе событий (отписаться от всего)' %}</a>
</div>
</div>
</form>
<footer class="page_footer">&copy; Expomap {% now "Y" %}</footer>
<div class="modals">
<div id="search-modal">
{% include 'client/popups/new_themes.html' %}
</div>
<div id="cities-modal">
{% include 'client/popups/russia_cities.html' %}
</div>
<div id="countries_modal">
{% include 'client/popups/mailing_settings_countries.html' %}
</div>
{% if unsubscribe_success or unsubscribed %}
<div id="unsibscribed_modal">
{% include 'client/popups/unsubscribed.html' %}
</div>
{% endif %}
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.pack.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js" defer></script>
<script src="{% static 'mailing_settings/js/main.js' %}" defer></script>
</body>
</html>

@ -103,7 +103,7 @@
<a style="float: left;" href="/profile/messages/" data-tooltip="{% trans 'Сообщения' %}"> <a style="float: left;" href="/profile/messages/" data-tooltip="{% trans 'Сообщения' %}">
<i class="fa fa-envelope-o"></i>{% if messages_inbox_count %} {{ messages_inbox_count }} {% endif %} <i class="fa fa-envelope-o"></i>{% if messages_inbox_count %} {{ messages_inbox_count }} {% endif %}
</a> </a>
<a href="{% url 'accounts-mailing_settings' %}" style="font-size: 18px" target="_blank" data-tooltip="{% trans 'Настройки рассылки' %}"> <a href="{% url 'newsletter_subscription' %}" style="font-size: 18px" target="_blank" data-tooltip="{% trans 'Настройки рассылки' %}">
<i class="fa fa-at"></i> <i class="fa fa-at"></i>
</a> </a>
</div> </div>

@ -0,0 +1,59 @@
{% load static i18n %}
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{% trans 'Настройте рассылку от Expomap' %}</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'mailing_settings/css/main.css' %}">
<link rel="stylesheet" href="{% static 'mailing_settings/css/form.css' %}">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" defer></script>
</head>
<body>
{% if user.is_authenticated %}
<header class="page_header">
<div class="container">
<div class="logo_block">
<a href="/"><img src="{% static 'mailing_settings/images/logo.png' %}" alt="Expomap"></a>
<a href="/" class="back_to_site">expomap.ru <span>&#8250;</span></a>
</div>
<h1>{% trans 'Настройте рассылку от Expomap' %}</h1>
<p>{% trans 'для' %} <span>{{ contact.email }}</span></p>
</div>
</header>
{% else %}
<header id="pr-header">
<div class="pr-center">
<div class="pr-header-box">
<a class="pr-phone" href="tel:+7 (499) 999-12-07">+7 (499) 999-12-07</a>
<ul class="pr-social">
<li><a href="https://instagram.com/expomap/"><img src="{% static 'mailing_settings/images/sm-icon-inst.png' %}" /></a></li>
<li><a href="https://www.youtube.com/user/expomaptv"><img src="{% static 'mailing_settings/images/sm-icon-youtube.png' %}" /></a></li>
<li><a href="https://www.facebook.com/Expomap"><img src="{% static 'mailing_settings/images/sm-icon-fb.png' %}" /></a></li>
<li><a href="http://www.linkedin.com/company/expomap-ru/"><img src="{% static 'mailing_settings/images/sm-icon-lin.png' %}" /></a></li>
<li><a href="http://vk.com/expomap"><img src="{% static 'mailing_settings/images/sm-icon-vk.png' %}" /></a></li>
<li><a href="https://twitter.com/expomap_ru"><img src="{% static 'mailing_settings/images/sm-icon-twit.png' %}" /></a></li>
</ul>
</div>
<strong class="pr-logo"><a href="/">Expomap</a></strong>
<span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span>
</div>
</header>
{% endif %}
<p>Страница в разработке</p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.pack.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js" defer></script>
<script src="{% static 'mailing_settings/js/main.js' %}" defer></script>
</body>
</html>

@ -1,107 +0,0 @@
{% load static i18n %}{% spaceless %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=1000">
<meta name="format-detection" content="telephone=no"/>
<title>Expomap</title>
<link rel="stylesheet" href="{% static 'subscribe_lending/css/all.css' %}" type="text/css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'mailing_settings/css/fonts.css' %}">
<link rel="stylesheet" href="{% static 'mailing_settings/css/form.css' %}">
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery-1.10.2.min.js' %}"></script>
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery.placeholder.js' %}"></script>
{# <script type="text/javascript" src="{% static 'subscribe_lending/js/icheck.min.js' %}"></script>#}
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery.main.js' %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.pack.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
<script src="{% static 'mailing_settings/js/main.js' %}"></script>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link href="favicon.ico" rel="shortcut icon">
<link href="favicon.ico" rel="icon">
<style>
.err{
border-width: 2px;
border-color: #d80000;
}
</style>
</head>
<body>
<div id="pr-wrapper" class="pr">
{% if user.is_authenticated %}
<header class="page_header">
<div class="container">
<div class="logo_block">
<a href="/"><img src="{% static 'mailing_settings/images/logo.png' %}" alt="Expomap"></a>
<a href="/" class="back_to_site">expomap.ru <span>&#8250;</span></a>
</div>
<h1>{% trans 'Настройте рассылку от Expomap' %}</h1>
<p>{% trans 'для' %} <span>{{ contact.email }}</span></p>
</div>
</header>
{% else %}
<header id="pr-header">
<div class="pr-center">
<div class="pr-header-box">
<a class="pr-phone" href="tel:+7 (499) 999-12-07">+7 (499) 999-12-07</a>
<ul class="pr-social">
<li><a href="https://instagram.com/expomap/"><img src="{% static 'subscribe_lending/images/sm-icon-inst.png' %}" /></a></li>
<li><a href="https://www.youtube.com/user/expomaptv"><img src="{% static 'subscribe_lending/images/sm-icon-youtube.png' %}" /></a></li>
<li><a href="https://www.facebook.com/Expomap"><img src="{% static 'subscribe_lending/images/sm-icon-fb.png' %}" /></a></li>
<li><a href="http://www.linkedin.com/company/expomap-ru/"><img src="{% static 'subscribe_lending/images/sm-icon-lin.png' %}" /></a></li>
<li><a href="http://vk.com/expomap"><img src="{% static 'subscribe_lending/images/sm-icon-vk.png' %}" /></a></li>
<li><a href="https://twitter.com/expomap_ru"><img src="{% static 'subscribe_lending/images/sm-icon-twit.png' %}" /></a></li>
</ul>
</div>
<strong class="pr-logo"><a href="/">Expomap</a></strong>
<span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span>
</div>
</header>
{% endif %}
<section id="pr-promo">
<div class="pr-center">
<h1>{% trans 'Анонсы выставок' %} <br />{% trans 'и конференций на ваш e-mail' %}</h1>
<h2>{% trans 'Хотите быть в курсе событий?' %}</h2>
<div class="pr-promo-text">
<p>{% trans 'Получайте анонсы выставок и конференций на email каждую среду. Вы можете выбрать несколько интересующих вас тематических направлений.' %} <a target="_blank" href="/newsletters/test-letter/">{% trans 'Пример письма' %}</a></p>
</div>
<form id="form1" action="#" class="pr-form" method="post">{% csrf_token %}
<fieldset>
<div class="pr-row">
<span class="pr-input pr-name">{{ form.first_name }}</span>
<span class="pr-input pr-email" >{{ form.email }}</span>
</div>
<button>{% trans 'Подписаться' %}</button>
</fieldset>
</form>
</div>
</section>
{% include 'client/includes/accounts/mailing_settings_form.html' with object=mailsettings_object form=mailsettings_form %}
</div>
<div class="modals">
<div id="search-modal">
{% include 'client/popups/new_themes.html' %}
</div>
<div id="cities-modal">
{% include 'client/popups/russia_cities.html' %}
</div>
<div id="countries_modal">
{% include 'client/popups/mailing_settings_countries.html' %}
</div>
</div>
</body>
</html>{% endspaceless %}

@ -14,7 +14,6 @@
<div class="topics-list"> <div class="topics-list">
<ul class="modal_checkboxes"> <ul class="modal_checkboxes">
{% for pk, name in r_cities %} {% for pk, name in r_cities %}
dfhdfhdghdfhdfhdg
<li class="level1"> <li class="level1">
<label> <label>
<input type="checkbox" class="hidden_checkbox" name="r_cities" id="" value="{{ pk }}"/> <input type="checkbox" class="hidden_checkbox" name="r_cities" id="" value="{{ pk }}"/>

Loading…
Cancel
Save