From e2c84eb83d42db13ebcce8fea20c0684e79cef6f Mon Sep 17 00:00:00 2001 From: jain Date: Tue, 29 Aug 2023 11:49:59 +0530 Subject: [PATCH] search junior task --- junior/views.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/junior/views.py b/junior/views.py index a560f4d..64aaffb 100644 --- a/junior/views.py +++ b/junior/views.py @@ -346,9 +346,19 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet): """Junior task list""" serializer_class = TaskDetailsjuniorSerializer permission_classes = [IsAuthenticated] + filter_backends = (SearchFilter,) + search_fields = ['task_name', ] pagination_class = PageNumberPagination http_method_names = ('get',) + def get_queryset(self): + queryset = JuniorTask.objects.filter(junior__auth=self.request.user + ).prefetch_related('junior', 'junior__auth' + ).order_by('due_date', 'created_at') + + queryset = self.filter_queryset(queryset) + return queryset + def list(self, request, *args, **kwargs): """Junior task list status=0 @@ -356,29 +366,14 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet): page=1""" try: status_value = self.request.GET.get('status') - search = self.request.GET.get('search') - if search.strip() == '': - return custom_error_response(ERROR_CODE['2083'], response_status=status.HTTP_400_BAD_REQUEST) - if search and str(status_value) == '0': - # search with title and for all task list - queryset = JuniorTask.objects.filter(junior__auth=request.user, - task_name__icontains=search).order_by('due_date', 'created_at') - elif search and str(status_value) != '0': - # search with title and fetch task list with status wise - queryset = JuniorTask.objects.filter(junior__auth=request.user, task_name__icontains=search, - task_status=status_value).order_by('due_date', 'created_at') - if search is None and str(status_value) == '0': - # fetch all task list - queryset = JuniorTask.objects.filter(junior__auth=request.user).order_by('due_date', 'created_at') - elif search is None and str(status_value) != '0': - # fetch task list with status wise - queryset = JuniorTask.objects.filter(junior__auth=request.user, - task_status=status_value).order_by('due_date','created_at') + queryset = self.get_queryset() + if status_value and status_value != '0': + queryset = queryset.filter(task_status=status_value) paginator = self.pagination_class() # use Pagination paginated_queryset = paginator.paginate_queryset(queryset, request) - # use TaskDetailsSerializer serializer - serializer = TaskDetailsjuniorSerializer(paginated_queryset, many=True) + # use TaskDetails juniorSerializer serializer + serializer = self.serializer_class(paginated_queryset, many=True) return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)