mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
Remove StripCountAnnotationsPaginator
This commit is contained in:
parent
1d1bb2b793
commit
fd1c8aa44a
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user