diff --git a/src/pretix/api/views/event.py b/src/pretix/api/views/event.py index 8249237885..9dd95b0fd5 100644 --- a/src/pretix/api/views/event.py +++ b/src/pretix/api/views/event.py @@ -244,13 +244,14 @@ class SubEventViewSet(ConditionalListView, viewsets.ModelViewSet): ) def perform_update(self, serializer): - if serializer.data == self.get_serializer(instance=serializer.instance).data: + original_data = self.get_serializer(instance=serializer.instance).data + super().perform_update(serializer) + + if serializer.data == original_data: # Performance optimization: If nothing was changed, we do not need to save or log anything. # This costs us a few cycles on save, but avoids thousands of lines in our log. return - super().perform_update(serializer) - serializer.instance.log_action( 'pretix.subevent.changed', user=self.request.user, diff --git a/src/pretix/api/views/item.py b/src/pretix/api/views/item.py index 97b149cc56..872db4969e 100644 --- a/src/pretix/api/views/item.py +++ b/src/pretix/api/views/item.py @@ -65,11 +65,14 @@ class ItemViewSet(ConditionalListView, viewsets.ModelViewSet): return ctx def perform_update(self, serializer): - if serializer.data == self.get_serializer(instance=serializer.instance).data: + original_data = self.get_serializer(instance=serializer.instance).data + + serializer.save(event=self.request.event) + + if serializer.data == original_data: # Performance optimization: If nothing was changed, we do not need to save or log anything. # This costs us a few cycles on save, but avoids thousands of lines in our log. return - serializer.save(event=self.request.event) serializer.instance.log_action( 'pretix.event.item.changed', user=self.request.user, @@ -456,14 +459,17 @@ class QuotaViewSet(ConditionalListView, viewsets.ModelViewSet): return ctx def perform_update(self, serializer): - if serializer.data == self.get_serializer(instance=serializer.instance).data: - # Performance optimization: If nothing was changed, we do not need to save or log anything. - # This costs us a few cycles on save, but avoids thousands of lines in our log. - return + original_data = self.get_serializer(instance=serializer.instance).data current_subevent = serializer.instance.subevent serializer.save(event=self.request.event) request_subevent = serializer.instance.subevent + + if serializer.data == original_data: + # Performance optimization: If nothing was changed, we do not need to save or log anything. + # This costs us a few cycles on save, but avoids thousands of lines in our log. + return + serializer.instance.log_action( 'pretix.event.quota.changed', user=self.request.user,