diff --git a/account/utils.py b/account/utils.py index 9ef0106..9122477 100644 --- a/account/utils.py +++ b/account/utils.py @@ -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): diff --git a/guardian/views.py b/guardian/views.py index e832ec5..9d6af06 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -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): diff --git a/junior/views.py b/junior/views.py index 9a49345..fb4771d 100644 --- a/junior/views.py +++ b/junior/views.py @@ -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) diff --git a/web_admin/views/article.py b/web_admin/views/article.py index c9d4426..ab55d16 100644 --- a/web_admin/views/article.py +++ b/web_admin/views/article.py @@ -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) diff --git a/zod_bank/settings.py b/zod_bank/settings.py index 590bc9d..cde1918 100644 --- a/zod_bank/settings.py +++ b/zod_bank/settings.py @@ -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 = []