diff --git a/guardian/serializers.py b/guardian/serializers.py index 8ec66bf..df2178a 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -308,6 +308,7 @@ class GuardianProfileSerializer(serializers.ModelSerializer): 'is_active', 'is_complete_profile', 'created_at', 'image', 'signup_method', 'updated_at', 'passcode'] + class ApproveJuniorSerializer(serializers.ModelSerializer): """approve junior serializer""" class Meta(object): @@ -319,9 +320,11 @@ class ApproveJuniorSerializer(serializers.ModelSerializer): """update guardian code""" instance = self.context['junior'] instance.guardian_code = [self.context['guardian_code']] + instance.is_invited = True instance.save() return instance + class ApproveTaskSerializer(serializers.ModelSerializer): """approve task serializer""" class Meta(object): diff --git a/guardian/views.py b/guardian/views.py index 7a56656..9706e87 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -281,10 +281,13 @@ class ApproveJuniorAPIView(viewsets.ViewSet): serializer.save() return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK) else: + queryset[1].guardian_code = None + queryset[1].save() return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK) except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) + class ApproveTaskAPIView(viewsets.ViewSet): """approve junior by guardian""" serializer_class = ApproveTaskSerializer diff --git a/junior/views.py b/junior/views.py index 429b2a1..b9c3f88 100644 --- a/junior/views.py +++ b/junior/views.py @@ -5,6 +5,8 @@ from rest_framework import viewsets, status, generics,views from rest_framework.permissions import IsAuthenticated from rest_framework.pagination import PageNumberPagination from django.contrib.auth.models import User +from rest_framework.filters import SearchFilter + import datetime import requests """Django app import""" @@ -115,8 +117,14 @@ class JuniorListAPIView(viewsets.ModelViewSet): 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: @@ -124,7 +132,8 @@ class JuniorListAPIView(viewsets.ModelViewSet): guardian_data = Guardian.objects.filter(user__email=request.user).last() # fetch junior object if guardian_data: - queryset = Junior.objects.filter(guardian_code__icontains=str(guardian_data.guardian_code)) + 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) @@ -132,20 +141,21 @@ class JuniorListAPIView(viewsets.ModelViewSet): except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) + class AddJuniorAPIView(viewsets.ModelViewSet): """Add Junior by guardian""" queryset = Junior.objects.all() serializer_class = AddJuniorSerializer permission_classes = [IsAuthenticated] http_method_names = ('post',) + def create(self, request, *args, **kwargs): """ junior list""" try: info_data = {'user': request.user, 'relationship': str(request.data['relationship']), 'email': request.data['email'], 'first_name': request.data['first_name'], 'last_name': request.data['last_name']} - if User.objects.filter(username=request.data['email']): - return custom_error_response(ERROR_CODE['2059'], response_status=status.HTTP_400_BAD_REQUEST) - + if user := User.objects.filter(username=request.data['email']): + self.associate_guardian(user) # use AddJuniorSerializer serializer serializer = AddJuniorSerializer(data=request.data, context=info_data) if serializer.is_valid(): @@ -156,6 +166,14 @@ class AddJuniorAPIView(viewsets.ModelViewSet): except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) + def associate_guardian(self, user): + junior = Junior.objects.filter(auth=user).first() + guardian = Guardian.objects.filter(user=self.request.user).first() + junior.guardian_code = [guardian.guardian_code] + junior.save() + return True + + class InvitedJuniorAPIView(viewsets.ModelViewSet): """Junior list of assosicated guardian"""