From 5d528b885abbb139237627dfe200431491fa050f Mon Sep 17 00:00:00 2001 From: jain Date: Thu, 13 Jul 2023 19:24:33 +0530 Subject: [PATCH] jira-18 approval API --- account/utils.py | 6 ++++++ base/messages.py | 4 +++- guardian/serializers.py | 16 ++++++++++++++++ guardian/urls.py | 4 +++- guardian/views.py | 26 +++++++++++++++++++++++++- 5 files changed, 53 insertions(+), 3 deletions(-) diff --git a/account/utils.py b/account/utils.py index 3b74d24..846add9 100644 --- a/account/utils.py +++ b/account/utils.py @@ -187,3 +187,9 @@ def generate_alphanumeric_code(length): code = ''.join(secrets.choice(alphabet) for _ in range(length)) return code + +def generate_code(value, user_id): + alphabet = value + user_id.zfill(3) + return alphabet + + diff --git a/base/messages.py b/base/messages.py index 2c0d9cd..ffbbbec 100644 --- a/base/messages.py +++ b/base/messages.py @@ -93,7 +93,9 @@ SUCCESS_CODE = { "3019": "Support Email sent successfully", "3020": "Logged out successfully.", "3021": "Add junior successfully", - "3022": "Remove junior successfully" + "3022": "Remove junior successfully", + "3023": "Approved junior successfully", + "3024": "Reject junior request successfully" } STATUS_CODE_ERROR = { diff --git a/guardian/serializers.py b/guardian/serializers.py index 65def21..9d2a676 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -241,3 +241,19 @@ class GuardianProfileSerializer(serializers.ModelSerializer): 'guardian_code', 'notification_count', 'total_count', 'complete_field_count', 'referral_code', 'is_active', 'is_complete_profile', 'created_at', 'image', 'signup_method', 'updated_at', 'passcode'] + +class ApproveJuniorSerializer(serializers.ModelSerializer): + """approve junior serializer""" + class Meta(object): + """Meta info""" + model = Junior + fields = ['id', 'guardian_code'] + + def create(self, validated_data): + """update guardian code""" + instance = self.context['junior'] + instance.guardian_code = [self.context['guardian_code']] + instance.save() + return instance + + diff --git a/guardian/urls.py b/guardian/urls.py index b69b041..168610b 100644 --- a/guardian/urls.py +++ b/guardian/urls.py @@ -2,7 +2,7 @@ """Django import""" from django.urls import path, include from .views import (SignupViewset, UpdateGuardianProfile, AllTaskListAPIView, CreateTaskAPIView, TaskListAPIView, - SearchTaskListAPIView, TopJuniorListAPIView) + SearchTaskListAPIView, TopJuniorListAPIView, ApproveJuniorAPIView) """Third party import""" from rest_framework import routers @@ -24,6 +24,8 @@ router.register('task-list', TaskListAPIView, basename='task-list') router.register('top-junior', TopJuniorListAPIView, basename='top-junior') """Search Task list on the bases of status, due date, and task title API""" router.register('filter-task', SearchTaskListAPIView, basename='filter-task') +"""Approve junior API""" +router.register('approve-junior', ApproveJuniorAPIView, basename='approve-junior') """Define Url pattern""" urlpatterns = [ path('api/v1/', include(router.urls)), diff --git a/guardian/views.py b/guardian/views.py index 61bf9b9..f060732 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -9,7 +9,7 @@ from PIL import Image from datetime import datetime, timedelta """Import Django app""" from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer, - TopJuniorSerializer) + TopJuniorSerializer, ApproveJuniorSerializer) from .models import Guardian, JuniorTask from junior.models import Junior, JuniorPoints from junior.serializers import JuniorDetailSerializer @@ -114,6 +114,7 @@ class CreateTaskAPIView(viewsets.ModelViewSet): def create(self, request, *args, **kwargs): image = request.data['default_image'] data = request.data + print("data===>",data,'==>',type(data)) if 'https' in str(image): image_data = image else: @@ -178,3 +179,26 @@ class TopJuniorListAPIView(viewsets.ModelViewSet): return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) +class ApproveJuniorAPIView(viewsets.ViewSet): + """approve junior by guardian""" + serializer_class = ApproveJuniorSerializer + permission_classes = [IsAuthenticated] + + def get_queryset(self): + """Get the queryset for the view""" + guardian = Guardian.objects.filter(user__email=self.request.user).last() + junior_queryset = Junior.objects.filter(id=self.request.data.get('junior_id')).last() + return guardian, junior_queryset + + def create(self, request, *args, **kwargs): + """ junior list""" + queryset = self.get_queryset() + if request.data['action'] == '1': + serializer = ApproveJuniorSerializer(context={"guardian_code": queryset[0].guardian_code, + "junior": queryset[1], "action": request.data['action']}, + data=request.data) + if serializer.is_valid(): + serializer.save() + return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK) + else: + return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK)