fix(api): добавлен кастомный класс пагинации с поддержкой page_size

This commit is contained in:
Игорь Надеин 2025-12-29 15:48:19 +03:00
parent 36f756988b
commit 25f84cc026
3 changed files with 17 additions and 3 deletions

14
backend/api/pagination.py Normal file
View File

@ -0,0 +1,14 @@
"""Кастомные классы пагинации для API."""
from rest_framework.pagination import PageNumberPagination
class StandardPagination(PageNumberPagination):
"""Стандартная пагинация с поддержкой параметра page_size.
Позволяет клиенту указывать размер страницы через параметр page_size,
с ограничением максимального размера страницы.
"""
page_size = 20
page_size_query_param = 'page_size'
max_page_size = 10000 # Максимальный размер страницы

View File

@ -299,7 +299,7 @@ REST_FRAMEWORK = {
],
"DEFAULT_THROTTLE_CLASSES": ["rest_framework.throttling.AnonRateThrottle"],
"DEFAULT_THROTTLE_RATES": {"anon": "60/min"},
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
"DEFAULT_PAGINATION_CLASS": "api.pagination.StandardPagination",
"PAGE_SIZE": 20,
}

View File

@ -267,7 +267,7 @@ class RequestsView(LoginRequiredMixin, TemplateView):
# Загружаем список сотрудников для фильтра
employees = []
ok_emp, data_emp, _ = _api_unpack(api.get("v1/employees/", params={"page_size": 1000}))
ok_emp, data_emp, _ = _api_unpack(api.get("v1/employees/", params={"page_size": 10000}))
if ok_emp:
employees_results, _, _, _ = _parse_page_payload(data_emp)
employees = employees_results
@ -297,7 +297,7 @@ class RequestsView(LoginRequiredMixin, TemplateView):
# Загружаем список сотрудников для фильтра
employees = []
ok_emp, data_emp, _ = _api_unpack(api.get("v1/employees/", params={"page_size": 1000}))
ok_emp, data_emp, _ = _api_unpack(api.get("v1/employees/", params={"page_size": 10000}))
if ok_emp:
employees_results, _, _, _ = _parse_page_payload(data_emp)
employees = employees_results