X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/4603878e7fc59d5cd25ec659d5012ddfe7b5152c..df60910b2d457f031cbe0a153e51e7378c0165d8:/src/messaging/views.py
diff --git a/src/messaging/views.py b/src/messaging/views.py
index 31debe180..fc09d72c4 100644
--- a/src/messaging/views.py
+++ b/src/messaging/views.py
@@ -3,9 +3,24 @@ from django.http import JsonResponse
from django.urls import reverse
from django.shortcuts import render
from django.utils.translation import ugettext as _
-from .states import states
+from django.views.decorators import cache
+from django.views.generic import DetailView, UpdateView
+from . import models
+from .states import Level, states
+def describe(value):
+ if hasattr(value, '_meta'):
+ meta = value._meta
+ return _('''a %(verbose_name)s object.''') % {
+ 'docs_url': reverse('django-admindocs-models-detail', args=(meta.app_label, meta.model_name)),
+ 'verbose_name': meta.verbose_name,
+ }
+ else:
+ return type(value).__name__
+
+
+@cache.never_cache
def state_info(request, slug):
for state in states:
if state.slug == slug:
@@ -13,18 +28,37 @@ def state_info(request, slug):
else:
return JsonResponse({})
- meta = state().get_example_object('').model._meta
-
- help_text = _('''Context:
- {{ %(model_name)s }}
â a %(verbose_name)s object.
- You can put it in in the fields Subject and Body using dot notation, like this:
- {{ %(model_name)s.id }}
.''') % {
- 'model_name': meta.model_name,
- 'docs_url': reverse('django-admindocs-models-detail', args=(meta.app_label, meta.model_name)),
- 'verbose_name': meta.verbose_name,
- }
+ contact = models.Contact()
+ ctx = {
+ "contact": contact,
+ }
+ ctx.update(state(test=True).get_context(contact))
+ help_text = '%s:
' % _('Context')
+ for k, v in ctx.items():
+ help_text += '
{{ %s }}
â %s
' % (k, describe(v))
return JsonResponse({
"help": help_text,
})
+
+class OptOutView(UpdateView):
+ model = models.Contact
+ slug_url_kwarg = 'key'
+ slug_field = 'key'
+ 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'
+
+