From ae3190292d89fad003ed601b5268615f089167f1 Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Wed, 19 Oct 2016 02:15:32 +0300 Subject: [PATCH] 1581 --- accounts/urls.py | 2 + accounts/views.py | 59 +++++++++++++------ emencia/django/newsletter/forms.py | 1 + .../client/accounts/mailing_settings.html | 8 ++- templates/client/accounts/settings.html | 5 ++ 5 files changed, 55 insertions(+), 20 deletions(-) diff --git a/accounts/urls.py b/accounts/urls.py index 51a6a553..c0a092df 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -9,6 +9,7 @@ from views import ( Feed, HomeView, MailingSettings, + MailingSettingsUnsubscribe, NameView, PhoneView, ProfileCompanyView, @@ -21,6 +22,7 @@ from views import ( urlpatterns = patterns('', url(r'^profile/company/$', login_required(ProfileCompanyView.as_view())), url(r'^profile/mailing/$', login_required(MailingSettings.as_view()), name='accounts-mailing_settings'), + url(r'^profile/mailing/unsubscribe/$', login_required(MailingSettingsUnsubscribe.as_view()), name='accounts-mailing_settings_unsubscribe'), url(r'^profile/settings/$', login_required(SettingsView.as_view()), name='accounts_settings'), url(r'^profile/calendar/remove/$', 'accounts.views.remove_from_calendar'), url(r'^profile/calendar/export/$', 'core.views.download_workbook'), diff --git a/accounts/views.py b/accounts/views.py index 7b323c3a..762cdb72 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -11,7 +11,9 @@ from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpRespons from django.contrib.auth.decorators import login_required from django.utils.translation import ugettext as _, get_language from django_messages.forms import SendForm -from django.views.generic import TemplateView, FormView +from django.views.generic import TemplateView, FormView, RedirectView +# from django.views.generic.detail import SingleObjectMixin + from django.conf import settings from meta.views import MetadataMixin @@ -91,18 +93,8 @@ class SettingsView(CreateUpdateView): return context -class MailingSettings(ContextMixin, AjaxableResponseMixin, CreateUpdateView): - form_class = MailingSettingsForm - template_name = 'client/accounts/mailing_settings.html' - success_url = reverse_lazy('accounts-mailing_settings') - - def get_success_url(self): - return self.success_url - - def get_object(self): - self.extra_ctx.update({ - 'r_cities': City.used.russia(), - }) +class GetUserMixin(object): + def get_user(self): instance = None if self.request.user.is_authenticated(): try: @@ -117,7 +109,22 @@ class MailingSettings(ContextMixin, AjaxableResponseMixin, CreateUpdateView): instance = Contact.objects.get(pk=self.request.session['ml_contact_pk']) except Contact.DoesNotExist: pass + return instance + +class MailingSettings(GetUserMixin, ContextMixin, AjaxableResponseMixin, CreateUpdateView): + form_class = MailingSettingsForm + template_name = 'client/accounts/mailing_settings.html' + success_url = reverse_lazy('accounts-mailing_settings') + + def get_success_url(self): + return self.success_url + + def get_object(self): + self.extra_ctx.update({ + 'r_cities': City.used.russia(), + }) + instance = self.get_user() if instance is not None: self.extra_ctx.update({ 'checked_f_countries': list(instance.f_countries.values_list('pk', flat=True)), @@ -130,19 +137,33 @@ class MailingSettings(ContextMixin, AjaxableResponseMixin, CreateUpdateView): return instance def form_valid(self, form): - print(form.cleaned_data) - print(form.errors) - print(self.request.POST) + # print(form.cleaned_data) + # print(form.errors) + # print(self.request.POST) # import pdb; pdb.set_trace() return super(MailingSettings, self).form_valid(form) def form_invalid(self, form): - print(form.cleaned_data) - print(form.errors) - print(self.request.POST) + # print(form.cleaned_data) + # print(form.errors) + # print(self.request.POST) return super(MailingSettings, self).form_invalid(form) +class MailingSettingsUnsubscribe(GetUserMixin, RedirectView): + url = reverse_lazy('accounts-mailing_settings') + + def get(self, request, *args, **kwargs): + contact = self.get_user() + if contact is None: + return HttpResponseForbidden() + if contact.subscriber: + contact.subscriber = False + contact.save() + return super(MailingSettingsUnsubscribe, self).get(request, *args, **kwargs) + + + class CalendarView(TemplateView): """ display template with user calendar(one month) diff --git a/emencia/django/newsletter/forms.py b/emencia/django/newsletter/forms.py index 58b60403..0b71db55 100644 --- a/emencia/django/newsletter/forms.py +++ b/emencia/django/newsletter/forms.py @@ -163,6 +163,7 @@ class MailingSettingsForm(forms.ModelForm): obj.tags = self.cleaned_data.get('tg') or [] obj.themes = self.cleaned_data.get('th') or [] obj.from_users = False + obj.subscriber = True obj.save() return obj diff --git a/templates/client/accounts/mailing_settings.html b/templates/client/accounts/mailing_settings.html index e19a5369..c89b3855 100644 --- a/templates/client/accounts/mailing_settings.html +++ b/templates/client/accounts/mailing_settings.html @@ -23,6 +23,12 @@ + {% if not object.subscriber %} +
+ {% trans "Вы не являетесь подписчиком. Чтобы подписаться, выберите интересующие Вас данные." %} +
+ {% endif %} +
{% csrf_token %}
@@ -153,7 +159,7 @@ diff --git a/templates/client/accounts/settings.html b/templates/client/accounts/settings.html index 524e0953..9aaf7388 100644 --- a/templates/client/accounts/settings.html +++ b/templates/client/accounts/settings.html @@ -114,6 +114,9 @@ --> + {% endcomment %} +
{% block scripts %}