From cfbfb74996a3ef74835a0fc44b1a85f38da44ebd Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 6 Aug 2019 11:03:52 +0200 Subject: [PATCH] Move method once again --- src/pretix/control/views/event.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index 5d2ec2ad83..5dea233625 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -99,7 +99,21 @@ class MetaDataEditorMixin: f.instance.delete() -class EventUpdate(EventSettingsViewMixin, EventPermissionRequiredMixin, MetaDataEditorMixin, UpdateView): +class DecoupleMixin: + + def _save_decoupled(self, form): + # Save fields that are currently only set via the organizer but should be decoupled + fields = set() + for f in self.request.POST.getlist("decouple"): + fields |= set(f.split(",")) + for f in fields: + if f not in form.fields: + continue + if f not in self.request.event.settings._cache(): + self.request.event.settings.set(f, self.request.event.settings.get(f)) + + +class EventUpdate(DecoupleMixin, EventSettingsViewMixin, EventPermissionRequiredMixin, MetaDataEditorMixin, UpdateView): model = Event form_class = EventUpdateForm template_name = 'pretixcontrol/event/settings.html' @@ -327,7 +341,7 @@ class PaymentProviderSettings(EventSettingsViewMixin, EventPermissionRequiredMix return self.get(request) -class EventSettingsFormView(EventPermissionRequiredMixin, FormView): +class EventSettingsFormView(EventPermissionRequiredMixin, DecoupleMixin, FormView): model = Event permission = 'can_change_event_settings' @@ -343,17 +357,6 @@ class EventSettingsFormView(EventPermissionRequiredMixin, FormView): def form_success(self): pass - def _save_decoupled(self, form): - # Save fields that are currently only set via the organizer but should be decoupled - fields = set() - for f in self.request.POST.getlist("decouple"): - fields |= set(f.split(",")) - for f in fields: - if f not in form.fields: - continue - if f not in self.request.event.settings._cache(): - self.request.event.settings.set(f, self.request.event.settings.get(f)) - @transaction.atomic def post(self, request, *args, **kwargs): form = self.get_form()