Remove StripCountAnnotationsPaginator

This commit is contained in:
jeremystretch 2022-10-26 16:23:05 -04:00
parent 1d1bb2b793
commit fd1c8aa44a
2 changed files with 2 additions and 15 deletions

View File

@ -21,7 +21,6 @@ from ipam.models import Prefix, VLAN
from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired
from netbox.api.exceptions import ServiceUnavailable from netbox.api.exceptions import ServiceUnavailable
from netbox.api.metadata import ContentTypeMetadata from netbox.api.metadata import ContentTypeMetadata
from netbox.api.pagination import StripCountAnnotationsPaginator, TwoModePagination
from netbox.api.viewsets import NetBoxModelViewSet from netbox.api.viewsets import NetBoxModelViewSet
from netbox.config import get_config from netbox.config import get_config
from netbox.constants import NESTED_SERIALIZER_PREFIX from netbox.constants import NESTED_SERIALIZER_PREFIX
@ -398,7 +397,8 @@ class DeviceViewSet(ConfigContextQuerySetMixin, NetBoxModelViewSet):
'virtual_chassis__master', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'tags', 'virtual_chassis__master', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'tags',
) )
filterset_class = filtersets.DeviceFilterSet filterset_class = filtersets.DeviceFilterSet
pagination_class = partial(TwoModePagination, StripCountAnnotationsPaginator) # TODO: Solve for #9374
# pagination_class = StripCountAnnotationsPaginator
def get_serializer_class(self): def get_serializer_class(self):
""" """

View File

@ -76,19 +76,6 @@ class OptionalLimitOffsetPagination(LimitOffsetPagination):
return super().get_previous_link() return super().get_previous_link()
class StripCountAnnotationsPaginator(OptionalLimitOffsetPagination):
"""
Strips the annotations on the queryset before getting the count
to optimize pagination of complex queries.
"""
def get_queryset_count(self, queryset):
# Clone the queryset to avoid messing up the actual query
cloned_queryset = queryset.all()
cloned_queryset.query.annotations.clear()
return cloned_queryset.count()
class CursorPaginationWithNoLimit(CursorPagination): class CursorPaginationWithNoLimit(CursorPagination):
""" """
Allow setting limit=0 to disable pagination for a request. The limit can only be disabled if Allow setting limit=0 to disable pagination for a request. The limit can only be disabled if