mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-17 02:45:08 +00:00
Merge pull request #304 from KiwiTechLLC/ZBKBCK-50
modified pagination in task list and junior task list api
This commit is contained in:
@ -185,13 +185,13 @@ def send_support_email(name, sender, message):
|
|||||||
return name
|
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"""
|
"""Custom response code"""
|
||||||
if not data:
|
if not data:
|
||||||
"""when data is none"""
|
"""when data is none"""
|
||||||
data = None
|
data = None
|
||||||
return Response({"data": data, "message": detail, "total_pages":total_pages, "current_page":current_page,
|
return Response({"data": data, "message": detail, "status": "success",
|
||||||
"status": "success", "code": response_status, "count": count})
|
"code": response_status, "count": count})
|
||||||
|
|
||||||
|
|
||||||
def custom_error_response(detail, response_status):
|
def custom_error_response(detail, response_status):
|
||||||
|
@ -17,6 +17,7 @@ from base.constants import guardian_code_tuple
|
|||||||
from rest_framework.filters import SearchFilter
|
from rest_framework.filters import SearchFilter
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
|
from base.pagination import CustomPageNumberPagination
|
||||||
# Import guardian's model,
|
# Import guardian's model,
|
||||||
# Import junior's model,
|
# Import junior's model,
|
||||||
# Import account's model,
|
# Import account's model,
|
||||||
@ -147,8 +148,8 @@ class TaskListAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = JuniorTask.objects.filter(guardian__user=self.request.user
|
queryset = JuniorTask.objects.filter(guardian__user=self.request.user
|
||||||
).prefetch_related('junior', 'junior__auth'
|
).select_related('junior', 'junior__auth'
|
||||||
).order_by('due_date', 'created_at')
|
).order_by('due_date', 'created_at')
|
||||||
|
|
||||||
queryset = self.filter_queryset(queryset)
|
queryset = self.filter_queryset(queryset)
|
||||||
return queryset
|
return queryset
|
||||||
@ -156,23 +157,19 @@ class TaskListAPIView(viewsets.ModelViewSet):
|
|||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Create guardian profile"""
|
"""Create guardian profile"""
|
||||||
status_value = self.request.GET.get('status')
|
status_value = self.request.GET.get('status')
|
||||||
current_page = self.request.GET.get('page')
|
|
||||||
junior = self.request.GET.get('junior')
|
junior = self.request.GET.get('junior')
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
task_status = task_status_fun(status_value)
|
task_status = task_status_fun(status_value)
|
||||||
if status_value and not junior:
|
if status_value:
|
||||||
queryset = queryset.filter(task_status__in=task_status)
|
queryset = queryset.filter(task_status__in=task_status)
|
||||||
elif status_value and junior:
|
if junior:
|
||||||
queryset = queryset.filter(task_status__in=task_status,junior=int(junior))
|
queryset = queryset.filter(junior=int(junior))
|
||||||
paginator = self.pagination_class()
|
paginator = CustomPageNumberPagination()
|
||||||
total_count = len(queryset)
|
|
||||||
total_pages = math.ceil(total_count/10)
|
|
||||||
# use Pagination
|
# use Pagination
|
||||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||||
# use TaskDetailsSerializer serializer
|
# use TaskDetailsSerializer serializer
|
||||||
serializer = self.serializer_class(paginated_queryset, many=True)
|
serializer = self.serializer_class(paginated_queryset, many=True)
|
||||||
return custom_response(None, serializer.data, total_pages=total_pages, current_page=current_page,
|
return paginator.get_paginated_response(serializer.data)
|
||||||
response_status=status.HTTP_200_OK)
|
|
||||||
|
|
||||||
|
|
||||||
class CreateTaskAPIView(viewsets.ModelViewSet):
|
class CreateTaskAPIView(viewsets.ModelViewSet):
|
||||||
|
@ -13,6 +13,9 @@ import requests
|
|||||||
|
|
||||||
from rest_framework.viewsets import GenericViewSet, mixins
|
from rest_framework.viewsets import GenericViewSet, mixins
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
from base.pagination import CustomPageNumberPagination
|
||||||
|
|
||||||
"""Django app import"""
|
"""Django app import"""
|
||||||
from drf_yasg.utils import swagger_auto_schema
|
from drf_yasg.utils import swagger_auto_schema
|
||||||
from drf_yasg import openapi
|
from drf_yasg import openapi
|
||||||
@ -354,8 +357,8 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = JuniorTask.objects.filter(junior__auth=self.request.user
|
queryset = JuniorTask.objects.filter(junior__auth=self.request.user
|
||||||
).prefetch_related('junior', 'junior__auth'
|
).select_related('junior', 'junior__auth'
|
||||||
).order_by('due_date', 'created_at')
|
).order_by('due_date', 'created_at')
|
||||||
|
|
||||||
queryset = self.filter_queryset(queryset)
|
queryset = self.filter_queryset(queryset)
|
||||||
return queryset
|
return queryset
|
||||||
@ -367,20 +370,16 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
page=1"""
|
page=1"""
|
||||||
try:
|
try:
|
||||||
status_value = self.request.GET.get('status')
|
status_value = self.request.GET.get('status')
|
||||||
current_page = self.request.GET.get('page')
|
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
task_status = task_status_fun(status_value)
|
task_status = task_status_fun(status_value)
|
||||||
if status_value:
|
if status_value:
|
||||||
queryset = queryset.filter(task_status__in=task_status)
|
queryset = queryset.filter(task_status__in=task_status)
|
||||||
paginator = self.pagination_class()
|
paginator = CustomPageNumberPagination()
|
||||||
total_count = len(queryset)
|
|
||||||
total_pages = math.ceil(total_count / 10)
|
|
||||||
# use Pagination
|
# use Pagination
|
||||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||||
# use TaskDetails juniorSerializer serializer
|
# use TaskDetails juniorSerializer serializer
|
||||||
serializer = self.serializer_class(paginated_queryset, many=True)
|
serializer = self.serializer_class(paginated_queryset, many=True)
|
||||||
return custom_response(None, serializer.data, total_pages=total_pages, current_page=current_page,
|
return paginator.get_paginated_response(serializer.data)
|
||||||
response_status=status.HTTP_200_OK)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ class DefaultArticleCardImagesViewSet(GenericViewSet, mixins.CreateModelMixin, m
|
|||||||
:param request:
|
:param request:
|
||||||
:return: default article card images
|
:return: default article card images
|
||||||
"""
|
"""
|
||||||
queryset = self.queryset
|
queryset = self.get_queryset()
|
||||||
serializer = self.serializer_class(queryset, many=True)
|
serializer = self.serializer_class(queryset, many=True)
|
||||||
return custom_response(None, data=serializer.data)
|
return custom_response(None, data=serializer.data)
|
||||||
|
|
||||||
|
@ -41,20 +41,20 @@ ENV = os.getenv('ENV')
|
|||||||
CORS_ORIGIN_ALLOW_ALL = False
|
CORS_ORIGIN_ALLOW_ALL = False
|
||||||
|
|
||||||
# Allow specific origins
|
# Allow specific origins
|
||||||
# if ENV in ['dev', 'qa', 'stage']:
|
if ENV in ['dev', 'qa', 'stage']:
|
||||||
CORS_ALLOWED_ORIGINS = [
|
CORS_ALLOWED_ORIGINS = [
|
||||||
# backend base url
|
# backend base url
|
||||||
"https://dev-api.zodqaapp.com",
|
"https://dev-api.zodqaapp.com",
|
||||||
"https://qa-api.zodqaapp.com",
|
"https://qa-api.zodqaapp.com",
|
||||||
"https://stage-api.zodqaapp.com",
|
"https://stage-api.zodqaapp.com",
|
||||||
|
|
||||||
# frontend url
|
# frontend url
|
||||||
"http://localhost:3000",
|
"http://localhost:3000",
|
||||||
"https://zod-dev.zodqaapp.com",
|
"https://zod-dev.zodqaapp.com",
|
||||||
"https://zod-qa.zodqaapp.com",
|
"https://zod-qa.zodqaapp.com",
|
||||||
"https://zod-stage.zodqaapp.com",
|
"https://zod-stage.zodqaapp.com",
|
||||||
# Add more trusted origins as needed
|
# Add more trusted origins as needed
|
||||||
]
|
]
|
||||||
if ENV == "prod":
|
if ENV == "prod":
|
||||||
CORS_ALLOWED_ORIGINS = []
|
CORS_ALLOWED_ORIGINS = []
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user