Add basic login.
[wolnelektury.git] / src / messaging / views.py
index 6ea1a40..b4dbc26 100644 (file)
@@ -2,17 +2,16 @@ import json
 from django.http import JsonResponse
 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):
     if hasattr(value, '_meta'):
         meta = value._meta
-        return _('''a <a href="%(docs_url)s">%(verbose_name)s</a> object.''') % {
+        return '''objekt typu <a href="%(docs_url)s">%(verbose_name)s</a>.''' % {
                'docs_url': reverse('django-admindocs-models-detail', args=(meta.app_label, meta.model_name)),
                'verbose_name': meta.verbose_name,
             }
@@ -33,7 +32,7 @@ def state_info(request, slug):
         "contact": contact,
     }
     ctx.update(state(test=True).get_context(contact))
-    help_text = '%s:<br>' % _('Context')
+    help_text = 'Kontekst:<br>'
     for k, v in ctx.items():
         help_text += '<br><code>{{ %s }}</code> — %s<br>' % (k, describe(v))
 
@@ -46,5 +45,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'
+