From: Radek Czajka Date: Wed, 29 Jan 2020 13:36:18 +0000 (+0100) Subject: Opt-out working. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/ef79260cc592940ed31899db916fb84bd723291c Opt-out working. --- diff --git a/src/messaging/models.py b/src/messaging/models.py index da8a01edc..b7a87b35d 100644 --- a/src/messaging/models.py +++ b/src/messaging/models.py @@ -4,6 +4,7 @@ from django.core.mail import send_mail from django.db import models from django.template import Template, Context from django.urls import reverse +from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from sentry_sdk import capture_exception from catalogue.utils import get_random_hash @@ -127,7 +128,9 @@ class Contact(models.Model): if not created: obj.ascend(level, since, expires_at) - def ascend(self, level, since, expires_at=None): + def ascend(self, level, since=None, expires_at=None): + if since is None: + since = now() if level < self.level: return if level == self.level: diff --git a/src/messaging/templates/messaging/contact_detail.html b/src/messaging/templates/messaging/contact_detail.html new file mode 100644 index 000000000..725f2080d --- /dev/null +++ b/src/messaging/templates/messaging/contact_detail.html @@ -0,0 +1,13 @@ +{% extends "base/base.html" %} + +{% block body %} + +

Adres wypisany

+ +{% if contact.level == 50 %} +

Potwierdzamy, że adres {{ contact.email }} został wypisany z korespondencji.

+{% else %} +Błąd. +{% endif %} + +{% endblock %} diff --git a/src/messaging/templates/messaging/contact_form.html b/src/messaging/templates/messaging/contact_form.html index bbe9f37d4..153490abf 100644 --- a/src/messaging/templates/messaging/contact_form.html +++ b/src/messaging/templates/messaging/contact_form.html @@ -5,6 +5,7 @@

Czy na pewno chcesz zrezygnować z otrzymywania e-maili na adres {{ object.email }}?

+ {% csrf_token %}
diff --git a/src/messaging/urls.py b/src/messaging/urls.py index 499000896..cacfe0160 100644 --- a/src/messaging/urls.py +++ b/src/messaging/urls.py @@ -5,4 +5,5 @@ from . import views urlpatterns = [ path('states//info.json', views.state_info), path('opt-out//', views.OptOutView.as_view(), name='messaging_optout'), + path('opt-out//ok/', views.OptOutOkView.as_view(), name='messaging_optout_ok'), ] diff --git a/src/messaging/views.py b/src/messaging/views.py index 6ea1a4098..fc09d72c4 100644 --- a/src/messaging/views.py +++ b/src/messaging/views.py @@ -4,9 +4,9 @@ from django.urls import reverse from django.shortcuts import render from django.utils.translation import ugettext as _ from django.views.decorators import cache -from django.views.generic import UpdateView +from django.views.generic import DetailView, UpdateView from . import models -from .states import states +from .states import Level, states def describe(value): @@ -46,5 +46,19 @@ class OptOutView(UpdateView): model = models.Contact slug_url_kwarg = 'key' slug_field = 'key' - fields = ['level'] + fields = [] + + def get_success_url(self): + return reverse('messaging_optout_ok', args=[self.object.key]) + + def form_valid(self, form): + self.object.ascend(Level.OPT_OUT) + return super().form_valid(form) + + +class OptOutOkView(DetailView): + model = models.Contact + slug_url_kwarg = 'key' + slug_field = 'key' +