From d2a3ba182bb8a0fa2bd1f7de8b086b0737f74457 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 19 Jul 2018 09:30:47 +0200 Subject: [PATCH] Fix KeyError when accessing settings for disabled payment provider --- src/pretix/control/views/event.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index df00a1d20e..f48221c7a1 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -255,9 +255,7 @@ class PaymentProviderSettings(EventSettingsViewMixin, EventPermissionRequiredMix @cached_property def provider(self): - provider = self.request.event.get_payment_providers()[self.kwargs['provider']] - if not provider: - raise Http404() + provider = self.request.event.get_payment_providers().get(self.kwargs['provider']) return provider @cached_property @@ -276,6 +274,13 @@ class PaymentProviderSettings(EventSettingsViewMixin, EventPermissionRequiredMix form.prepare_fields() return form + def dispatch(self, request, *args, **kwargs): + if not self.provider: + messages.error(self.request, _('This payment provider does not exist or the respective plugin is ' + 'disabled.')) + return redirect(self.get_success_url()) + return super().dispatch(request, *args, **kwargs) + @cached_property def settings_content(self): return self.provider.settings_content_render(self.request)