diff --git a/src/pretix/api/views/event.py b/src/pretix/api/views/event.py index 282b9f782..f777f19d8 100644 --- a/src/pretix/api/views/event.py +++ b/src/pretix/api/views/event.py @@ -133,6 +133,7 @@ class EventViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(organizer=self.request.organizer) + serializer.instance.set_defaults() serializer.instance.log_action( 'pretix.event.added', user=self.request.user, diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index 50bb13a77..f6579c3ae 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -363,6 +363,12 @@ class Event(EventMixin, LoggedModel): def __str__(self): return str(self.name) + def set_defaults(self): + """ + This will be called after event creation, but only if the event was not created by copying an existing one. + This way, we can use this to introduce new default settings to pretix that do not affect existing events. + """ + @property def social_image(self): from pretix.multidomain.urlreverse import build_absolute_uri diff --git a/src/pretix/control/views/main.py b/src/pretix/control/views/main.py index 4fec1538c..42f33eccb 100644 --- a/src/pretix/control/views/main.py +++ b/src/pretix/control/views/main.py @@ -267,17 +267,19 @@ class EventWizard(SafeSessionWizardView): event.copy_data_from(from_event) elif self.clone_from: event.copy_data_from(self.clone_from) - elif event.has_subevents: - event.checkin_lists.create( - name=str(se), - all_products=True, - subevent=se - ) else: - event.checkin_lists.create( - name=_('Default'), - all_products=True - ) + if event.has_subevents: + event.checkin_lists.create( + name=str(se), + all_products=True, + subevent=se + ) + else: + self.checkin_lists.create( + name=_('Default'), + all_products=True + ) + event.set_defaults() if basics_data['tax_rate']: if not event.settings.tax_rate_default or event.settings.tax_rate_default.rate != basics_data['tax_rate']: