From 7b75a3233ca657a7cd4489f969df64f0a9d4867c Mon Sep 17 00:00:00 2001 From: jain Date: Mon, 4 Sep 2023 12:52:04 +0530 Subject: [PATCH] add current page and total page in task list API --- account/utils.py | 5 +++-- guardian/views.py | 7 ++++++- junior/views.py | 7 ++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/account/utils.py b/account/utils.py index 60a5c44..f77e8e5 100644 --- a/account/utils.py +++ b/account/utils.py @@ -186,12 +186,13 @@ def send_support_email(name, sender, subject, message): return name -def custom_response(detail, data=None, response_status=status.HTTP_200_OK, count=None): +def custom_response(detail, data=None, total_pages=None, current_page=None, response_status=status.HTTP_200_OK, count=None): """Custom response code""" if not data: """when data is none""" data = None - return Response({"data": data, "message": detail, "status": "success", "code": response_status, "count": count}) + return Response({"data": data, "message": detail, "total_pages":total_pages, "current_page":current_page, + "status": "success", "code": response_status, "count": count}) def custom_error_response(detail, response_status): diff --git a/guardian/views.py b/guardian/views.py index b212faf..e115065 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -1,4 +1,5 @@ """Views of Guardian""" +import math # django imports # Import IsAuthenticated @@ -154,15 +155,19 @@ class TaskListAPIView(viewsets.ModelViewSet): def list(self, request, *args, **kwargs): """Create guardian profile""" status_value = self.request.GET.get('status') + current_page = self.request.GET.get('page') queryset = self.get_queryset() if status_value and status_value != '0': queryset = queryset.filter(task_status=status_value) paginator = self.pagination_class() + total_count = len(queryset) + total_pages = math.ceil(total_count/10) # use Pagination paginated_queryset = paginator.paginate_queryset(queryset, request) # use TaskDetailsSerializer serializer serializer = self.serializer_class(paginated_queryset, many=True) - return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) + return custom_response(None, serializer.data, total_pages=total_pages, current_page=current_page, + response_status=status.HTTP_200_OK) class CreateTaskAPIView(viewsets.ModelViewSet): diff --git a/junior/views.py b/junior/views.py index 3e9eeed..1d2cac8 100644 --- a/junior/views.py +++ b/junior/views.py @@ -12,6 +12,7 @@ import datetime import requests from rest_framework.viewsets import GenericViewSet, mixins +import math """Django app import""" from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi @@ -366,15 +367,19 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet): page=1""" try: status_value = self.request.GET.get('status') + current_page = self.request.GET.get('page') queryset = self.get_queryset() if status_value and status_value != '0': queryset = queryset.filter(task_status=status_value) paginator = self.pagination_class() + total_count = len(queryset) + total_pages = math.ceil(total_count / 10) # use Pagination paginated_queryset = paginator.paginate_queryset(queryset, request) # use TaskDetails juniorSerializer serializer serializer = self.serializer_class(paginated_queryset, many=True) - return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) + return custom_response(None, serializer.data, total_pages=total_pages, current_page=current_page, + response_status=status.HTTP_200_OK) except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)