From 49c4acefd087f4108b3574cd6af0a6946a029b38 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 10 Jun 2019 17:18:08 +0200 Subject: [PATCH] Fix critical error in previous commit --- src/pretix/api/views/event.py | 7 ++++--- src/pretix/api/views/item.py | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/pretix/api/views/event.py b/src/pretix/api/views/event.py index 824923788..9dd95b0fd 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 97b149cc5..872db4969 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,