Ensure total ordering of paginated lists (#3061)

This commit is contained in:
Raphael Michel
2023-02-24 10:51:51 +01:00
committed by GitHub
parent c2d720b3b9
commit 7d4b575150
26 changed files with 232 additions and 77 deletions

View File

@@ -23,8 +23,8 @@ from django.core.exceptions import ValidationError
from django_filters.rest_framework import DjangoFilterBackend, FilterSet
from django_scopes import scopes_disabled
from rest_framework import viewsets
from rest_framework.filters import OrderingFilter
from pretix.api.pagination import TotalOrderingFilter
from pretix.api.serializers.i18n import I18nAwareModelSerializer
from pretix.plugins.sendmail.models import Rule
@@ -73,7 +73,7 @@ with scopes_disabled():
class RuleViewSet(viewsets.ModelViewSet):
queryset = Rule.objects.none()
serializer_class = RuleSerializer
filter_backends = (DjangoFilterBackend, OrderingFilter)
filter_backends = (DjangoFilterBackend, TotalOrderingFilter)
filterset_class = RuleFilter
ordering = ('id',)
ordering_fields = ('id',)

View File

@@ -700,7 +700,7 @@ class ListRules(EventPermissionRequiredMixin, PaginationMixin, ListView):
),
).prefetch_related(
'limit_products'
)
).order_by('-send_date', 'subject', 'pk')
class DeleteRule(EventPermissionRequiredMixin, DeleteView):
@@ -746,7 +746,7 @@ class ScheduleView(EventPermissionRequiredMixin, PaginationMixin, ListView):
def get_queryset(self):
return self.rule.scheduledmail_set.select_related('subevent').order_by(
'-computed_datetime'
'-computed_datetime', '-pk'
)
def get_context_data(self, **kwargs):