task list api modified

This commit is contained in:
abutalib-kiwi
2023-08-03 18:17:01 +05:30
parent f2cf1488e9
commit dd0f2b027a
2 changed files with 63 additions and 23 deletions

View File

@ -222,9 +222,15 @@ class TaskDetailsSerializer(serializers.ModelSerializer):
def get_remaining_time(self, obj): def get_remaining_time(self, obj):
""" remaining time to complete task""" """ remaining time to complete task"""
import pytz
from django.utils import timezone
due_date_datetime = datetime.combine(obj.due_date, datetime.max.time()) due_date_datetime = datetime.combine(obj.due_date, datetime.max.time())
# fetch real time # fetch real time
current_datetime = real_time() # current_datetime = real_time()
print(due_date_datetime.astimezone(pytz.utc), datetime.now(pytz.utc), timezone.now().astimezone(pytz.utc))
# new code
due_date_datetime = due_date_datetime.astimezone(pytz.utc)
current_datetime = timezone.now().astimezone(pytz.utc)
# Perform the subtraction # Perform the subtraction
if due_date_datetime > current_datetime: if due_date_datetime > current_datetime:
time_difference = due_date_datetime - current_datetime time_difference = due_date_datetime - current_datetime

View File

@ -10,6 +10,8 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.pagination import PageNumberPagination from rest_framework.pagination import PageNumberPagination
from django.contrib.auth.models import User from django.contrib.auth.models import User
from rest_framework.filters import SearchFilter
from django.utils import timezone from django.utils import timezone
# Import guardian's model, # Import guardian's model,
@ -126,37 +128,69 @@ class AllTaskListAPIView(viewsets.ModelViewSet):
serializer = TaskDetailsSerializer(queryset, many=True) serializer = TaskDetailsSerializer(queryset, many=True)
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
# class TaskListAPIView(viewsets.ModelViewSet):
# """Update guardian profile"""
# serializer_class = TaskDetailsSerializer
# permission_classes = [IsAuthenticated]
# pagination_class = PageNumberPagination
# http_method_names = ('get',)
#
# def list(self, request, *args, **kwargs):
# """Create guardian profile"""
# try:
# status_value = self.request.GET.get('status')
# search = self.request.GET.get('search')
# if search and str(status_value) == '0':
# queryset = JuniorTask.objects.filter(guardian__user=request.user,
# task_name__icontains=search).order_by('due_date', 'created_at')
# elif search and str(status_value) != '0':
# queryset = JuniorTask.objects.filter(guardian__user=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':
# queryset = JuniorTask.objects.filter(guardian__user=request.user).order_by('due_date', 'created_at')
# elif search is None and str(status_value) != '0':
# queryset = JuniorTask.objects.filter(guardian__user=request.user,
# task_status=status_value).order_by('due_date','created_at')
# paginator = self.pagination_class()
# # use Pagination
# paginated_queryset = paginator.paginate_queryset(queryset, request)
# # use TaskDetailsSerializer serializer
# serializer = TaskDetailsSerializer(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)
class TaskListAPIView(viewsets.ModelViewSet): class TaskListAPIView(viewsets.ModelViewSet):
"""Update guardian profile""" """Update guardian profile"""
serializer_class = TaskDetailsSerializer serializer_class = TaskDetailsSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
filter_backends = (SearchFilter,)
search_fields = ['task_name', ]
pagination_class = PageNumberPagination pagination_class = PageNumberPagination
http_method_names = ('get',) http_method_names = ('get',)
def get_queryset(self):
queryset = JuniorTask.objects.filter(guardian__user=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): def list(self, request, *args, **kwargs):
"""Create guardian profile""" """Create guardian profile"""
try: status_value = self.request.GET.get('status')
status_value = self.request.GET.get('status') queryset = self.get_queryset()
search = self.request.GET.get('search') if status_value and status_value != '0':
if search and str(status_value) == '0': queryset = queryset.filter(task_status=status_value)
queryset = JuniorTask.objects.filter(guardian__user=request.user, paginator = self.pagination_class()
task_name__icontains=search).order_by('due_date', 'created_at') # use Pagination
elif search and str(status_value) != '0': paginated_queryset = paginator.paginate_queryset(queryset, request)
queryset = JuniorTask.objects.filter(guardian__user=request.user,task_name__icontains=search, # use TaskDetailsSerializer serializer
task_status=status_value).order_by('due_date', 'created_at') serializer = self.serializer_class(paginated_queryset, many=True)
if search is None and str(status_value) == '0': return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
queryset = JuniorTask.objects.filter(guardian__user=request.user).order_by('due_date', 'created_at')
elif search is None and str(status_value) != '0':
queryset = JuniorTask.objects.filter(guardian__user=request.user,
task_status=status_value).order_by('due_date','created_at')
paginator = self.pagination_class()
# use Pagination
paginated_queryset = paginator.paginate_queryset(queryset, request)
# use TaskDetailsSerializer serializer
serializer = TaskDetailsSerializer(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)
class CreateTaskAPIView(viewsets.ModelViewSet): class CreateTaskAPIView(viewsets.ModelViewSet):
"""create task for junior""" """create task for junior"""