mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-26 16:44:54 +00:00
jira-15 top junior API and default images field
This commit is contained in:
@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user