guardian list api

This commit is contained in:
jain
2023-08-07 13:25:01 +05:30
parent 88221ec77a
commit f377e283fd
5 changed files with 63 additions and 36 deletions

View File

@ -92,7 +92,8 @@ ERROR_CODE = {
"2063": "Unauthorized access.",
"2064": "To change your password first request an OTP and get it verify then change your password.",
"2065": "Passwords do not match. Please try again.",
"2066": "Task does not exist or not in expired state"
"2066": "Task does not exist or not in expired state",
"2067": "No guardian associated with this junior"
}
"""Success message code"""
SUCCESS_CODE = {

View File

@ -23,7 +23,7 @@ from account.utils import generate_code
from junior.serializers import JuniorDetailSerializer
from base.messages import ERROR_CODE, SUCCESS_CODE
from base.constants import NUMBER, JUN, ZOD, GRD
from junior.models import Junior, JuniorPoints
from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship
from .utils import real_time, convert_timedelta_into_datetime, update_referral_points
# notification's constant
from notifications.constants import TASK_POINTS, TASK_REJECTED
@ -386,3 +386,36 @@ class ApproveTaskSerializer(serializers.ModelSerializer):
junior_data.save()
return junior_details
class GuardianDetailListSerializer(serializers.ModelSerializer):
"""Guardian serializer"""
first_name = serializers.SerializerMethodField('get_first_name')
last_name = serializers.SerializerMethodField('get_last_name')
email = serializers.SerializerMethodField('get_email')
image = serializers.SerializerMethodField('get_image')
guardian_id = serializers.SerializerMethodField('get_guardian_id')
class Meta(object):
"""Meta info"""
model = JuniorGuardianRelationship
fields = ['guardian_id', 'first_name', 'last_name', 'email', 'relationship', 'image', 'created_at',
'updated_at']
def get_guardian_id(self,obj):
"""first name of guardian"""
return obj.guardian.id
def get_first_name(self,obj):
"""first name of guardian"""
return obj.guardian.user.first_name
def get_last_name(self,obj):
"""last name of guardian"""
return obj.guardian.user.last_name
def get_email(self,obj):
"""emailof guardian"""
return obj.guardian.user.email
def get_image(self,obj):
"""first name of guardian"""
return obj.guardian.image

View File

@ -26,9 +26,10 @@ from django.utils import timezone
# Import notification constant
# Import send_notification function
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
TopJuniorSerializer, ApproveJuniorSerializer, ApproveTaskSerializer)
TopJuniorSerializer, ApproveJuniorSerializer, ApproveTaskSerializer,
GuardianDetailListSerializer)
from .models import Guardian, JuniorTask
from junior.models import Junior, JuniorPoints
from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship
from account.models import UserEmailOtp, UserNotification
from .tasks import generate_otp
from account.utils import custom_response, custom_error_response, OTP_EXPIRY, send_otp_email
@ -329,32 +330,21 @@ class ApproveTaskAPIView(viewsets.ViewSet):
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
class GuardianListAPIView(viewsets.ModelViewSet):
"""Junior list of assosicated guardian"""
pass
"""Guardian list of assosicated junior"""
# serializer_class = JuniorDetailListSerializer
# queryset = Junior.objects.all()
# permission_classes = [IsAuthenticated]
# filter_backends = (SearchFilter,)
# search_fields = ['auth__first_name', 'auth__last_name']
# http_method_names = ('get',)
#
# def get_queryset(self):
# queryset = self.filter_queryset(self.queryset)
# return queryset
#
# def list(self, request, *args, **kwargs):
# """ junior list"""
# try:
# update_positions_based_on_points()
# guardian_data = Guardian.objects.filter(user__email=request.user).last()
# # fetch junior object
# if guardian_data:
# queryset = self.get_queryset()
# queryset = queryset.filter(guardian_code__icontains=str(guardian_data.guardian_code))
# # use JuniorDetailListSerializer serializer
# serializer = JuniorDetailListSerializer(queryset, many=True)
# return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
# return custom_error_response(ERROR_CODE['2045'], response_status=status.HTTP_200_OK)
# except Exception as e:
# return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
serializer_class = GuardianDetailListSerializer
permission_classes = [IsAuthenticated]
http_method_names = ('get',)
def list(self, request, *args, **kwargs):
""" junior list"""
try:
guardian_data = JuniorGuardianRelationship.objects.filter(junior__auth__email=self.request.user)
# fetch junior object
if guardian_data:
# use GuardianDetailListSerializer serializer
serializer = GuardianDetailListSerializer(guardian_data, many=True)
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
return custom_error_response(ERROR_CODE['2067'], response_status=status.HTTP_200_OK)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)

View File

@ -89,6 +89,9 @@ class CreateJuniorSerializer(serializers.ModelSerializer):
"""condition for guardian code"""
if guardian_code:
junior.guardian_code = guardian_code
guardian_data = Guardian.objects.filter(guardian_code=guardian_code[0]).last()
if guardian_data:
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior)
junior.dob = validated_data.get('dob', junior.dob)
junior.passcode = validated_data.get('passcode', junior.passcode)
junior.country_name = validated_data.get('country_name', junior.country_name)
@ -289,7 +292,6 @@ class AddJuniorSerializer(serializers.ModelSerializer):
UserNotification.objects.get_or_create(user=user_data)
"""Notification email"""
junior_notification_email(email, full_name, email, password)
junior_approval_mail(guardian, full_name)
# push notification
send_notification.delay(SKIPPED_PROFILE_SETUP, None, junior_data.auth.id, {})
return junior_data

View File

@ -27,7 +27,7 @@ import requests
# Import upload_image_to_alibaba
# Import custom_response, custom_error_response
# Import constants
from junior.models import Junior, JuniorPoints
from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,\
RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer,
AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer)
@ -144,7 +144,6 @@ class JuniorListAPIView(viewsets.ModelViewSet):
class AddJuniorAPIView(viewsets.ModelViewSet):
"""Add Junior by guardian"""
queryset = Junior.objects.all()
serializer_class = AddJuniorSerializer
permission_classes = [IsAuthenticated]
http_method_names = ('post',)
@ -172,6 +171,8 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
guardian = Guardian.objects.filter(user=self.request.user).first()
junior.guardian_code = [guardian.guardian_code]
junior.save()
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior,
relationship=str(self.request.data['relationship']))
return True