jira-15 top junior API and default images field

This commit is contained in:
jain
2023-07-06 07:57:53 +05:30
parent 0d143a39ac
commit a80f603614
10 changed files with 243 additions and 9 deletions

View File

@ -2,16 +2,20 @@
"""Third party Django app"""
from rest_framework.permissions import IsAuthenticated
from rest_framework import viewsets, status
from django.db.models import Max
"""Import Django app"""
from .serializers import UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
TopJuniorSerializer)
from .models import Guardian, JuniorTask
from junior.models import Junior
from junior.serializers import JuniorDetailSerializer
from account.models import UserEmailOtp
from .tasks import generate_otp
from account.utils import send_otp_email
from account.utils import custom_response, custom_error_response
from base.messages import ERROR_CODE, SUCCESS_CODE
from .utils import upload_image_to_alibaba
from django.db.models import Sum
# Create your views here.
class SignupViewset(viewsets.ModelViewSet):
"""Signup view set"""
@ -73,7 +77,12 @@ class TaskListAPIView(viewsets.ModelViewSet):
def list(self, request, *args, **kwargs):
"""Create guardian profile"""
print("request.GET.get(status)==>",self.request.GET.get('status'))
queryset = JuniorTask.objects.filter(guardian__user=request.user, task_status=self.request.GET.get('status'))
status_value = self.request.GET.get('status')
if status_value == 0:
queryset = JuniorTask.objects.filter(guardian__user=request.user)
else:
queryset = JuniorTask.objects.filter(guardian__user=request.user,
task_status=status_value)
print("queryset==>",queryset)
serializer = TaskDetailsSerializer(queryset, many=True)
print("serializer.data===>",serializer.data)
@ -97,3 +106,80 @@ class CreateTaskAPIView(viewsets.ModelViewSet):
serializer.save()
return custom_response(SUCCESS_CODE['3018'], serializer.data, response_status=status.HTTP_200_OK)
return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST)
class SearchTaskListAPIView(viewsets.ModelViewSet):
"""Update guardian profile"""
serializer_class = TaskDetailsSerializer
permission_classes = [IsAuthenticated]
def list(self, request, *args, **kwargs):
"""Create guardian profile"""
due_date = self.request.GET.get('due_date')
print("request.GET.get(status)==>",self.request.GET.get('status'))
if self.request.GET.get('status'):
queryset = JuniorTask.objects.filter(guardian__user=request.user,
task_status=self.request.GET.get('status')).order_by('due_date')
if due_date:
queryset = JuniorTask.objects.filter(guardian__user=request.user,
due_date=due_date).order_by('due_date').order_by('created_at')
print("queryset==>",queryset)
serializer = TaskDetailsSerializer(queryset, many=True)
# print("serializer.data===>",serializer.data)
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
class TopJuniorListAPIView(viewsets.ModelViewSet):
"""Top juniors list"""
serializer_class = TopJuniorSerializer
# permission_classes = [IsAuthenticated]
def list(self, request, *args, **kwargs):
"""fetch junior list those complete their task"""
junior_ids_with_total_points = JuniorTask.objects.filter(task_status=1) \
.values('junior') \
.annotate(total_points=Sum('points')) \
.order_by('-total_points')
junior_ids = [item['junior'] for item in junior_ids_with_total_points]
juniors = Junior.objects.filter(id__in=junior_ids) \
.annotate(max_points=Max('junior_task__points')) \
.order_by('-max_points', 'id')
serializer = self.get_serializer(juniors, many=True, context={'junior_ids_with_total_points': junior_ids_with_total_points})
return custom_response(serializer.data, response_status=status.HTTP_200_OK)
#
# class TopJuniorListAPIView(viewsets.ModelViewSet):
# """Top juniors list"""
# serializer_class = TopJuniorSerializer
# # permission_classes = [IsAuthenticated]
#
# def list(self, request, *args, **kwargs):
# """fetch junior list those complete their task"""
# total_highest_points = list(JuniorTask.objects.filter(task_status=1)
# .values('junior')
# .annotate(total_points=Sum('points'))
# .order_by('-total_points'))
# print("total_highest_points===>",total_highest_points,'===>',type(total_highest_points))
# junior_ids = [item['junior'] for item in total_highest_points]
# print("junior_ids====>", junior_ids)
# juniors = Junior.objects.filter(id__in=junior_ids)
# # a = []
# # for i in junior_ids:
# # juniors = Junior.objects.filter(id=i)
# # a.append(juniors)
# print("juniors====>", juniors)
# # print('a===>',a,'==>',type(a))
# serializer = self.get_serializer(juniors, context={'total_highest_points': total_highest_points}, many=True)
# print("serializer====>",type(serializer.data))
# # Find the junior with the highest points
# # highest_points_junior = max(serializer.data, key=lambda x: x['total_points'])
#
# return custom_response(serializer.data, response_status=status.HTTP_200_OK)
# # serializer = self.get_serializer(total_highest_points, many=True)
# # return custom_response(None, serializer.data,response_status=status.HTTP_200_OK)