diff --git a/accounts/views.py b/accounts/views.py
index b7191dbc..739e65e8 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -3,6 +3,7 @@ import dateutil.relativedelta as rdelta
import json, datetime
import calendar as python_calendar
from django.shortcuts import get_object_or_404
+from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpResponseForbidden
from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext as _, get_language
@@ -10,14 +11,14 @@ from django_messages.forms import SendForm
from django.views.generic import TemplateView, FormView
from functions.custom_views import ListView
from sorl.thumbnail import get_thumbnail
-from .forms import ChangePasswordForm, EmailAnnouncementForm, FeedFilterForm
+from .forms import ChangePasswordForm, FeedFilterForm
from company.forms import CreateCompanyForm
from .models import User
from .edit_forms import AvatarForm, NameForm, HomeForm, WorkForm, AboutCompanyForm, PhoneForm, EmailForm,\
WebPageForm, SocialForm, AboutForm
from emencia.django.newsletter.forms import SubscribeSettingsForm
from emencia.django.newsletter.models import Contact
-
+from meta.views import MetadataMixin
class SettingsView(TemplateView):
@@ -65,7 +66,7 @@ class SettingsView(TemplateView):
return context
-from django.core.urlresolvers import reverse
+
def save_announce_settings(request):
if request.POST:
@@ -87,6 +88,7 @@ def save_announce_settings(request):
form.save_additional_fields(setting)
else:
errors = form.errors
+ # todo: subscribe settings error handle
not_valid
return HttpResponseRedirect(reverse('accounts_settings'))
@@ -270,8 +272,6 @@ class ProfileCompanyView(TemplateView):
-
-from meta.views import MetadataMixin
class UserView(MetadataMixin, TemplateView):
"""
display user information for another users
diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py
index 53be1f93..3ec5f944 100644
--- a/emencia/django/newsletter/mailer.py
+++ b/emencia/django/newsletter/mailer.py
@@ -143,7 +143,7 @@ class NewsLetterSender(object):
message[header] = value
uidb36, token = tokenize(contact)
- unsubscribe_link = 'http://' + Site.objects.get_current().domain + reverse('newsletter_mailinglist_unsubscribe', args=[self.newsletter.slug, uidb36, token])
+ unsubscribe_link = 'http://' + Site.objects.get_current().domain + reverse('newsletter_mailinglist_unsubscribe_hard', args=[self.newsletter.slug, uidb36, token])
message['List-Unsubscribe'] = '<' + unsubscribe_link + '>'
message['List-Id'] = str(self.newsletter.id)
@@ -376,12 +376,14 @@ class Mailer(NewsLetterSender):
send = False
else:
announce_context = None
- try:
- if send:
+
+ if send:
message = self.build_message(contact, announce_context)
self.smtp.sendmail(self.newsletter.header_sender,
contact.email,
message.as_string())
+ try:
+ pass
except Exception, e:
exception = e
else:
diff --git a/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html b/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html
index b1a281a0..8cfc1522 100644
--- a/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html
+++ b/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html
@@ -4,7 +4,7 @@
| Чтобы отписаться от этой рассылки, перейдите по ссылке.
- | © 2018 — 2013 Expomap.ru |
+ © 2008 — 2015 Expomap.ru |
diff --git a/emencia/django/newsletter/urls/mailing_list.py b/emencia/django/newsletter/urls/mailing_list.py
index 8508df92..f0716c82 100644
--- a/emencia/django/newsletter/urls/mailing_list.py
+++ b/emencia/django/newsletter/urls/mailing_list.py
@@ -1,14 +1,25 @@
"""Urls for the emencia.django.newsletter Mailing List"""
-from django.conf.urls.defaults import url
-from django.conf.urls.defaults import patterns
+from django.conf.urls import url
+from django.conf.urls import patterns
+from emencia.django.newsletter.views.mailing_list import UnsubscribeView
from emencia.django.newsletter.forms import MailingListSubscriptionForm
from emencia.django.newsletter.forms import AllMailingListSubscriptionForm
urlpatterns = patterns('emencia.django.newsletter.views.mailing_list',
- url(r'^unsubscribe/(?P[-\w]+)/(?P[0-9A-Za-z]+)-(?P.+)/$',
+
+ url(r'^unsubscribe/hard/(?P[-\w]+)/(?P[0-9A-Za-z]+)-(?P.+)/$',
'view_mailinglist_unsubscribe',
+ name='newsletter_mailinglist_unsubscribe_hard'),
+
+ url(r'^unsubscribe/(?P[-\w]+)/(?P[0-9A-Za-z]+)-(?P.+)/$',
+ UnsubscribeView.as_view(),
name='newsletter_mailinglist_unsubscribe'),
+
+ url(r'^unsubscribe/handle/$',
+ 'unsubscription_handle',
+ name='newsletter_mailinglist_unsubscribe_handle'),
+
url(r'^subscribe/(?P\d+)/',
'view_mailinglist_subscribe',
{'form_class': MailingListSubscriptionForm},
diff --git a/emencia/django/newsletter/views/mailing_list.py b/emencia/django/newsletter/views/mailing_list.py
index e8d2d323..8b4bbf29 100644
--- a/emencia/django/newsletter/views/mailing_list.py
+++ b/emencia/django/newsletter/views/mailing_list.py
@@ -2,15 +2,18 @@
from django.template import RequestContext
from django.shortcuts import get_object_or_404
from django.shortcuts import render_to_response
+from django.contrib import messages
+from django.http import HttpResponseRedirect
+from django.views.generic import DetailView
from emencia.django.newsletter.utils.tokens import untokenize
-from emencia.django.newsletter.models import Newsletter
-from emencia.django.newsletter.models import MailingList
-from emencia.django.newsletter.models import ContactMailingStatus
+from emencia.django.newsletter.models import Newsletter, MailingList, ContactMailingStatus, Contact, ContactSettings
+from emencia.django.newsletter.forms import SubscribeSettingsForm
def view_mailinglist_unsubscribe(request, slug, uidb36, token):
- """Unsubscribe a contact to a mailing list"""
+ """hard Unsubscribe a contact to a mailing list"""
+ # todo: 111
newsletter = get_object_or_404(Newsletter, slug=slug)
contact = untokenize(uidb36, token)
@@ -59,3 +62,57 @@ def view_mailinglist_subscribe(request, form_class, mailing_list_id=None):
'mailing_list': mailing_list,
'form': form},
context_instance=RequestContext(request))
+
+
+class UnsubscribeView(DetailView):
+ model = Newsletter
+ template_name = 'client/newsletters/unsubscribe_form.html'
+
+ 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'))
+ setting = contact.contactsettings
+ initial = {'email': contact.email}
+
+ initial['city'] = ','.join(['%s:%s'%(item.id, item.name) for item in set(setting.city.all())])
+ if setting.exponent_practicum or setting.organiser_practicum or setting.theme.exists():
+ initial['get_announce'] = True
+ # north america check
+ if setting.area.filter(id=SubscribeSettingsForm.NA_ID).exists():
+ initial['na_expo'] = True
+ # asia check
+ if setting.area.filter(id=SubscribeSettingsForm.ASIA_ID).exists():
+ initial['asia_expo'] = True
+ # europe check
+ if setting.area.filter(id=SubscribeSettingsForm.EUROPE_ID).exists():
+ initial['europe_expo'] = True
+
+ 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()
+
+ return context
+
+
+def unsubscription_handle(request):
+
+ if request.POST:
+ email = request.POST.get('email')
+ contact = get_object_or_404(Contact, email=email)
+ setting = contact.contactsettings
+ form = SubscribeSettingsForm(request.POST, instance=setting)
+ if form.is_valid():
+ setting = form.save(commit=False)
+ setting.contact = contact
+ setting.save()
+ form.save_m2m()
+ form.save_additional_fields(setting)
+ messages.add_message(request, messages.INFO, u'Настройки вашой подписки успешно сохранены')
+ return HttpResponseRedirect('/')
\ No newline at end of file
diff --git a/templates/client/newsletters/unsubscribe_form.html b/templates/client/newsletters/unsubscribe_form.html
new file mode 100644
index 00000000..d900b00b
--- /dev/null
+++ b/templates/client/newsletters/unsubscribe_form.html
@@ -0,0 +1,150 @@
+{% extends 'client/base_catalog.html' %}
+{% load static %}
+{% load i18n %}
+
+
+{% block page_title %}
+
+
{% trans 'Отписаться' %}
+
+{% endblock %}
+
+{% block content_list %}
+
+
+
{% trans 'настройка подписки' %}
+
+
+
+ {% block scripts %}
+
+ {% endblock %}
+{% endblock %}
\ No newline at end of file