diff options
Diffstat (limited to 'src/django_pgpmailman/views')
| -rw-r--r-- | src/django_pgpmailman/views/list.py | 60 |
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}) |
