update pagination function to support offset and limit args
This commit is contained in:
@@ -4,10 +4,8 @@ import logging
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.paginator import Paginator
|
|
||||||
from django.views.generic import View
|
from django.views.generic import View
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -76,44 +74,21 @@ def paginate_data(request, query_set, object_serializer):
|
|||||||
else:
|
else:
|
||||||
return query_set
|
return query_set
|
||||||
|
|
||||||
page_size = request.GET.get("page_size", None)
|
try:
|
||||||
if not page_size:
|
limit = int(request.GET.get("limit", "100"))
|
||||||
raise ValueError("Error parameter page_size")
|
except Exception:
|
||||||
|
limit = 100
|
||||||
|
|
||||||
try:
|
try:
|
||||||
page_size = int(page_size)
|
offset = int(request.GET.get("offset", "100"))
|
||||||
except Exception:
|
except Exception:
|
||||||
raise ValueError("Error parameter page_size")
|
offset = 100
|
||||||
|
|
||||||
paginator = Paginator(query_set, page_size)
|
count = query_set.count()
|
||||||
page = request.GET.get("page", None)
|
results = object_serializer(query_set[offset:offset + limit], many=True).data
|
||||||
|
|
||||||
try:
|
|
||||||
current_page = paginator.page(page)
|
|
||||||
except Exception:
|
|
||||||
raise ValueError("Error parameter current_page")
|
|
||||||
if object_serializer:
|
|
||||||
results = object_serializer(current_page, many=True).data
|
|
||||||
else:
|
|
||||||
results = current_page
|
|
||||||
|
|
||||||
data = {"results": results,
|
data = {"results": results,
|
||||||
"previous_page": None,
|
"count": count}
|
||||||
"next_page": None,
|
|
||||||
"page_size": page_size,
|
|
||||||
"current_page": int(page),
|
|
||||||
"count": paginator.count,
|
|
||||||
"total_page": paginator.num_pages}
|
|
||||||
|
|
||||||
try:
|
|
||||||
data["previous_page"] = current_page.previous_page_number()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
|
||||||
data["next_page"] = current_page.next_page_number()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user