Merge pull request #304 from KiwiTechLLC/ZBKBCK-50

modified pagination in task list and junior task list api
This commit is contained in:
dilipshrivastwa-kiwi
2023-09-05 14:02:16 +05:30
committed by GitHub
5 changed files with 32 additions and 36 deletions

View File

@ -185,13 +185,13 @@ def send_support_email(name, sender, message):
return name
def custom_response(detail, data=None, total_pages=None, current_page=None, response_status=status.HTTP_200_OK, count=None):
def custom_response(detail, data=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, "total_pages":total_pages, "current_page":current_page,
"status": "success", "code": response_status, "count": count})
return Response({"data": data, "message": detail, "status": "success",
"code": response_status, "count": count})
def custom_error_response(detail, response_status):

View File

@ -17,6 +17,7 @@ from base.constants import guardian_code_tuple
from rest_framework.filters import SearchFilter
from django.utils import timezone
from base.pagination import CustomPageNumberPagination
# Import guardian's model,
# Import junior's model,
# Import account's model,
@ -147,8 +148,8 @@ class TaskListAPIView(viewsets.ModelViewSet):
def get_queryset(self):
queryset = JuniorTask.objects.filter(guardian__user=self.request.user
).prefetch_related('junior', 'junior__auth'
).order_by('due_date', 'created_at')
).select_related('junior', 'junior__auth'
).order_by('due_date', 'created_at')
queryset = self.filter_queryset(queryset)
return queryset
@ -156,23 +157,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')
junior = self.request.GET.get('junior')
queryset = self.get_queryset()
task_status = task_status_fun(status_value)
if status_value and not junior:
if status_value:
queryset = queryset.filter(task_status__in=task_status)
elif status_value and junior:
queryset = queryset.filter(task_status__in=task_status,junior=int(junior))
paginator = self.pagination_class()
total_count = len(queryset)
total_pages = math.ceil(total_count/10)
if junior:
queryset = queryset.filter(junior=int(junior))
paginator = CustomPageNumberPagination()
# 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, total_pages=total_pages, current_page=current_page,
response_status=status.HTTP_200_OK)
return paginator.get_paginated_response(serializer.data)
class CreateTaskAPIView(viewsets.ModelViewSet):

View File

@ -13,6 +13,9 @@ import requests
from rest_framework.viewsets import GenericViewSet, mixins
import math
from base.pagination import CustomPageNumberPagination
"""Django app import"""
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
@ -354,8 +357,8 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
def get_queryset(self):
queryset = JuniorTask.objects.filter(junior__auth=self.request.user
).prefetch_related('junior', 'junior__auth'
).order_by('due_date', 'created_at')
).select_related('junior', 'junior__auth'
).order_by('due_date', 'created_at')
queryset = self.filter_queryset(queryset)
return queryset
@ -367,20 +370,16 @@ 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()
task_status = task_status_fun(status_value)
if status_value:
queryset = queryset.filter(task_status__in=task_status)
paginator = self.pagination_class()
total_count = len(queryset)
total_pages = math.ceil(total_count / 10)
paginator = CustomPageNumberPagination()
# 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, total_pages=total_pages, current_page=current_page,
response_status=status.HTTP_200_OK)
return paginator.get_paginated_response(serializer.data)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)

View File

@ -230,7 +230,7 @@ class DefaultArticleCardImagesViewSet(GenericViewSet, mixins.CreateModelMixin, m
:param request:
:return: default article card images
"""
queryset = self.queryset
queryset = self.get_queryset()
serializer = self.serializer_class(queryset, many=True)
return custom_response(None, data=serializer.data)

View File

@ -41,20 +41,20 @@ ENV = os.getenv('ENV')
CORS_ORIGIN_ALLOW_ALL = False
# Allow specific origins
# if ENV in ['dev', 'qa', 'stage']:
CORS_ALLOWED_ORIGINS = [
# backend base url
"https://dev-api.zodqaapp.com",
"https://qa-api.zodqaapp.com",
"https://stage-api.zodqaapp.com",
if ENV in ['dev', 'qa', 'stage']:
CORS_ALLOWED_ORIGINS = [
# backend base url
"https://dev-api.zodqaapp.com",
"https://qa-api.zodqaapp.com",
"https://stage-api.zodqaapp.com",
# frontend url
"http://localhost:3000",
"https://zod-dev.zodqaapp.com",
"https://zod-qa.zodqaapp.com",
"https://zod-stage.zodqaapp.com",
# Add more trusted origins as needed
]
# frontend url
"http://localhost:3000",
"https://zod-dev.zodqaapp.com",
"https://zod-qa.zodqaapp.com",
"https://zod-stage.zodqaapp.com",
# Add more trusted origins as needed
]
if ENV == "prod":
CORS_ALLOWED_ORIGINS = []