aboutsummaryrefslogtreecommitdiff
path: root/src/django_pgpmailman/views/list.py
diff options
context:
space:
mode:
authorJ08nY2017-08-15 22:49:53 +0200
committerJ08nY2017-08-15 22:49:53 +0200
commitbd8dd5fbea383810bd14b10f5c7288954cab0d05 (patch)
tree1c82125cc490d3a8f63469d41dd38b3169a80c2e /src/django_pgpmailman/views/list.py
parent70cf9c14f3fd756bd40e848919d253d3e9b8fc44 (diff)
downloaddjango-pgpmailman-bd8dd5fbea383810bd14b10f5c7288954cab0d05.tar.gz
django-pgpmailman-bd8dd5fbea383810bd14b10f5c7288954cab0d05.tar.zst
django-pgpmailman-bd8dd5fbea383810bd14b10f5c7288954cab0d05.zip
Diffstat (limited to 'src/django_pgpmailman/views/list.py')
-rw-r--r--src/django_pgpmailman/views/list.py60
1 files changed, 39 insertions, 21 deletions
diff --git a/src/django_pgpmailman/views/list.py b/src/django_pgpmailman/views/list.py
index e5a7e8a..bbe2547 100644
--- a/src/django_pgpmailman/views/list.py
+++ b/src/django_pgpmailman/views/list.py
@@ -18,17 +18,21 @@
from __future__ import absolute_import, unicode_literals
+from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.files.base import ContentFile
from django.http import HttpResponse
from django.shortcuts import render
+from django.urls import reverse
from django.utils.decorators import method_decorator
+from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
from six.moves.urllib.error import HTTPError
from django_pgpmailman.decorators import list_view
from django_pgpmailman.forms import (ListSignatureSettingsForm,
- ListEncryptionSettingsForm)
+ ListEncryptionSettingsForm,
+ ListMiscSettingsForm)
from django_pgpmailman.plugin import get_pgp_plugin
@@ -66,6 +70,32 @@ class ListSettings(FormView):
self.pgp_list = get_pgp_plugin().get_list(kwargs['list_id'])
return super(ListSettings, self).dispatch(request, *args, **kwargs)
+ def form_valid(self, form):
+ if not form.changed_data:
+ return
+
+ for key in form.changed_data:
+ if form.cleaned_data[key] is not None:
+ setattr(self.pgp_list, key, form.cleaned_data[key])
+
+ try:
+ self.pgp_list.save()
+
+ if form.has_changed():
+ messages.success(
+ self.request, _('List settings have been updated.'))
+ else:
+ messages.info(self.request, _('List settings did not change.'))
+
+ except HTTPError as e:
+ messages.error(self.request, e.msg)
+
+ return super(ListSettings, self).form_valid(form)
+
+ def get_success_url(self):
+ return reverse(self.success_url,
+ kwargs=dict(list_id=self.pgp_list.list_id))
+
class ListSignatureSettingsView(ListSettings):
form_class = ListSignatureSettingsForm
@@ -75,40 +105,28 @@ class ListSignatureSettingsView(ListSettings):
'revoked_sig_action', 'invalid_sig_action',
'duplicate_sig_action')
- def form_valid(self, form):
- try:
-
- pass
- except HTTPError as e:
- pass
-
class ListEncryptionSettingsView(ListSettings):
form_class = ListEncryptionSettingsForm
template_name = 'django_pgpmailman/list/encryption_settings.html'
properties = ('nonencrypted_msg_action', 'encrypt_outgoing')
- def form_valid(self, form):
- try:
- pass
- except HTTPError as e:
- pass
+class ListMiscSettingsView(ListSettings):
+ form_class = ListMiscSettingsForm
+ template_name = 'django_pgpmailman/list/misc_settings.html'
+ properties = ('key_change_workflow', 'key_signing_allowed')
-# TODO: proper list owner auth
-@login_required
-@list_view
-def pgp_list_key_management(request, pgp_list):
- return render(request, 'django_pgpmailman/list/key_management.html',
- {'pgp_list': pgp_list})
+class ListKeyManagementView(ListSettings):
+ pass
# TODO: proper list owner auth
@login_required
@list_view
-def pgp_list_signature_settings(request, pgp_list):
- return render(request, 'django_pgpmailman/list/signature_settings.html',
+def pgp_list_key_management(request, pgp_list):
+ return render(request, 'django_pgpmailman/list/key_management.html',
{'pgp_list': pgp_list})