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.", "2063": "Unauthorized access.",
"2064": "To change your password first request an OTP and get it verify then change your password.", "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.", "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 message code"""
SUCCESS_CODE = { SUCCESS_CODE = {

View File

@ -23,7 +23,7 @@ from account.utils import generate_code
from junior.serializers import JuniorDetailSerializer from junior.serializers import JuniorDetailSerializer
from base.messages import ERROR_CODE, SUCCESS_CODE from base.messages import ERROR_CODE, SUCCESS_CODE
from base.constants import NUMBER, JUN, ZOD, GRD 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 from .utils import real_time, convert_timedelta_into_datetime, update_referral_points
# notification's constant # notification's constant
from notifications.constants import TASK_POINTS, TASK_REJECTED from notifications.constants import TASK_POINTS, TASK_REJECTED
@ -386,3 +386,36 @@ class ApproveTaskSerializer(serializers.ModelSerializer):
junior_data.save() junior_data.save()
return junior_details 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 notification constant
# Import send_notification function # Import send_notification function
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer, from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
TopJuniorSerializer, ApproveJuniorSerializer, ApproveTaskSerializer) TopJuniorSerializer, ApproveJuniorSerializer, ApproveTaskSerializer,
GuardianDetailListSerializer)
from .models import Guardian, JuniorTask 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 account.models import UserEmailOtp, UserNotification
from .tasks import generate_otp from .tasks import generate_otp
from account.utils import custom_response, custom_error_response, OTP_EXPIRY, send_otp_email 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) return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
class GuardianListAPIView(viewsets.ModelViewSet): class GuardianListAPIView(viewsets.ModelViewSet):
"""Junior list of assosicated guardian""" """Guardian list of assosicated junior"""
pass
# serializer_class = JuniorDetailListSerializer serializer_class = GuardianDetailListSerializer
# queryset = Junior.objects.all() permission_classes = [IsAuthenticated]
# permission_classes = [IsAuthenticated] http_method_names = ('get',)
# filter_backends = (SearchFilter,)
# search_fields = ['auth__first_name', 'auth__last_name'] def list(self, request, *args, **kwargs):
# http_method_names = ('get',) """ junior list"""
# try:
# def get_queryset(self): guardian_data = JuniorGuardianRelationship.objects.filter(junior__auth__email=self.request.user)
# queryset = self.filter_queryset(self.queryset) # fetch junior object
# return queryset if guardian_data:
# # use GuardianDetailListSerializer serializer
# def list(self, request, *args, **kwargs): serializer = GuardianDetailListSerializer(guardian_data, many=True)
# """ junior list""" return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
# try: return custom_error_response(ERROR_CODE['2067'], response_status=status.HTTP_200_OK)
# update_positions_based_on_points() except Exception as e:
# guardian_data = Guardian.objects.filter(user__email=request.user).last() return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
# # 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)

View File

@ -89,6 +89,9 @@ class CreateJuniorSerializer(serializers.ModelSerializer):
"""condition for guardian code""" """condition for guardian code"""
if guardian_code: if guardian_code:
junior.guardian_code = 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.dob = validated_data.get('dob', junior.dob)
junior.passcode = validated_data.get('passcode', junior.passcode) junior.passcode = validated_data.get('passcode', junior.passcode)
junior.country_name = validated_data.get('country_name', junior.country_name) 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) UserNotification.objects.get_or_create(user=user_data)
"""Notification email""" """Notification email"""
junior_notification_email(email, full_name, email, password) junior_notification_email(email, full_name, email, password)
junior_approval_mail(guardian, full_name)
# push notification # push notification
send_notification.delay(SKIPPED_PROFILE_SETUP, None, junior_data.auth.id, {}) send_notification.delay(SKIPPED_PROFILE_SETUP, None, junior_data.auth.id, {})
return junior_data return junior_data

View File

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