From bb3441e4eda4ec1e05ec9fad4e5fd679003316de Mon Sep 17 00:00:00 2001 From: jain Date: Wed, 23 Aug 2023 19:23:31 +0530 Subject: [PATCH 1/5] remove guardian code in both case --- junior/serializers.py | 7 +++++-- junior/views.py | 25 ++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/junior/serializers.py b/junior/serializers.py index 4530350..ec85608 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -505,8 +505,11 @@ class RemoveGuardianCodeSerializer(serializers.ModelSerializer): model = Junior fields = ('id', ) def update(self, instance, validated_data): - instance.guardian_code = None - instance.guardian_code_status = str(NUMBER['one']) + guardian_code = self.context['guardian_code'] + if self.instance and guardian_code in self.instance.guardian_code: + instance.guardian_code.remove(guardian_code) + if len(instance.guardian_code) == 0: + instance.guardian_code_status = str(NUMBER['one']) instance.save() return instance diff --git a/junior/views.py b/junior/views.py index 03f8ae7..558d9e5 100644 --- a/junior/views.py +++ b/junior/views.py @@ -724,10 +724,29 @@ class RemoveGuardianCodeAPIView(views.APIView): def put(self, request, format=None): try: - junior_queryset = Junior.objects.filter(auth=self.request.user).last() - if junior_queryset: + user_type = request.META.get('HTTP_USER_TYPE') + junior_id = request.data.get('junior_id') + guardian_id = request.data.get('guardian_id') + my_dict = {} + if user_type and str(user_type) == str(NUMBER['one']) and guardian_id: + queryset = Junior.objects.filter(auth__email=self.request.user, is_active=True, is_deleted=False).last() + guardian_code = Guardian.objects.filter(id=guardian_id).last().guardian_code + my_dict.update({"guardian_code": guardian_code}) + elif user_type and str(user_type) == str(NUMBER['two']) and junior_id: + guardian_code = Guardian.objects.filter(user=self.request.user, + is_active=True, is_deleted=False).last().guardian_code + queryset = Junior.objects.filter(id=junior_id).last() + my_dict.update({"guardian_code": guardian_code}) + else: + return custom_error_response( + ERROR_CODE["2069"], + response_status=status.HTTP_400_BAD_REQUEST + ) + if queryset: # use RemoveGuardianCodeSerializer serializer - serializer = RemoveGuardianCodeSerializer(junior_queryset, data=request.data, partial=True) + serializer = RemoveGuardianCodeSerializer(queryset, data=request.data, + context=my_dict, + partial=True) if serializer.is_valid(): # save serializer serializer.save() From 8f9450b7432123513e514823fc31229ae48b8180 Mon Sep 17 00:00:00 2001 From: jain Date: Thu, 24 Aug 2023 11:10:20 +0530 Subject: [PATCH 2/5] set guardian code is None --- account/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account/utils.py b/account/utils.py index 04c6791..956ae23 100644 --- a/account/utils.py +++ b/account/utils.py @@ -93,7 +93,7 @@ def junior_account_update(user_tb): # Update junior account junior_data.is_active = False junior_data.is_verified = False - junior_data.guardian_code = '{}' + junior_data.guardian_code = None junior_data.guardian_code_status = str(NUMBER['one']) junior_data.is_deleted = True junior_data.save() From 8cd4864748fde6f40ed78af9eafafdccb0928c1c Mon Sep 17 00:00:00 2001 From: jain Date: Thu, 24 Aug 2023 13:13:25 +0530 Subject: [PATCH 3/5] add three guardian at a time --- base/messages.py | 3 ++- junior/serializers.py | 13 +++++++++---- junior/views.py | 3 ++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/base/messages.py b/base/messages.py index 8930bdc..9afbe4f 100644 --- a/base/messages.py +++ b/base/messages.py @@ -106,7 +106,8 @@ ERROR_CODE = { "2077": "You can not add guardian", "2078": "This junior is not associate with you", "2079": "Please update your app version for enjoying uninterrupted services", - "2080": "Can not add App version" + "2080": "Can not add App version", + "2081": "You can not add more than 3 guardian" } """Success message code""" diff --git a/junior/serializers.py b/junior/serializers.py index edeee71..48eaea9 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -88,11 +88,16 @@ class CreateJuniorSerializer(serializers.ModelSerializer): if junior: """update details according to the data get from request""" junior.gender = validated_data.get('gender',junior.gender) - """Update guardian code""" - junior.guardian_code = validated_data.get('guardian_code', junior.guardian_code) - """condition for guardian code""" + # Update guardian code""" + # condition for guardian code if guardian_code: - junior.guardian_code = guardian_code + if not junior.guardian_code: + junior.guardian_code = [] + junior.guardian_code.extend(guardian_code) + elif len(junior.guardian_code) < 3 and len(guardian_code) < 3: + junior.guardian_code.extend(guardian_code) + else: + raise serializers.ValidationError({"error":ERROR_CODE['2081'],"code":"400", "status":"failed"}) guardian_data = Guardian.objects.filter(guardian_code=guardian_code[0]).last() if guardian_data: JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior) diff --git a/junior/views.py b/junior/views.py index 558d9e5..8b44e93 100644 --- a/junior/views.py +++ b/junior/views.py @@ -99,7 +99,8 @@ class UpdateJuniorProfile(viewsets.ModelViewSet): return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) except Exception as e: - return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) + error_detail = e.detail.get('error', None) + return custom_error_response(error_detail, response_status=status.HTTP_400_BAD_REQUEST) class ValidateGuardianCode(viewsets.ModelViewSet): """Check guardian code exist or not""" From 11605540d77f95f2cfbd2b517dd818d45bf2ac81 Mon Sep 17 00:00:00 2001 From: jain Date: Thu, 24 Aug 2023 13:18:23 +0530 Subject: [PATCH 4/5] remove guardian code request --- junior/serializers.py | 9 ++------- junior/views.py | 25 +++---------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/junior/serializers.py b/junior/serializers.py index 48eaea9..379b393 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -499,8 +499,6 @@ class ReAssignTaskSerializer(serializers.ModelSerializer): instance.save() return instance - - class RemoveGuardianCodeSerializer(serializers.ModelSerializer): """User task Serializer""" class Meta(object): @@ -508,11 +506,8 @@ class RemoveGuardianCodeSerializer(serializers.ModelSerializer): model = Junior fields = ('id', ) def update(self, instance, validated_data): - guardian_code = self.context['guardian_code'] - if self.instance and guardian_code in self.instance.guardian_code: - instance.guardian_code.remove(guardian_code) - if len(instance.guardian_code) == 0: - instance.guardian_code_status = str(NUMBER['one']) + instance.guardian_code = None + instance.guardian_code_status = str(NUMBER['one']) instance.save() return instance diff --git a/junior/views.py b/junior/views.py index 8b44e93..2abd61d 100644 --- a/junior/views.py +++ b/junior/views.py @@ -725,29 +725,10 @@ class RemoveGuardianCodeAPIView(views.APIView): def put(self, request, format=None): try: - user_type = request.META.get('HTTP_USER_TYPE') - junior_id = request.data.get('junior_id') - guardian_id = request.data.get('guardian_id') - my_dict = {} - if user_type and str(user_type) == str(NUMBER['one']) and guardian_id: - queryset = Junior.objects.filter(auth__email=self.request.user, is_active=True, is_deleted=False).last() - guardian_code = Guardian.objects.filter(id=guardian_id).last().guardian_code - my_dict.update({"guardian_code": guardian_code}) - elif user_type and str(user_type) == str(NUMBER['two']) and junior_id: - guardian_code = Guardian.objects.filter(user=self.request.user, - is_active=True, is_deleted=False).last().guardian_code - queryset = Junior.objects.filter(id=junior_id).last() - my_dict.update({"guardian_code": guardian_code}) - else: - return custom_error_response( - ERROR_CODE["2069"], - response_status=status.HTTP_400_BAD_REQUEST - ) - if queryset: + junior_queryset = Junior.objects.filter(auth=self.request.user).last() + if junior_queryset: # use RemoveGuardianCodeSerializer serializer - serializer = RemoveGuardianCodeSerializer(queryset, data=request.data, - context=my_dict, - partial=True) + serializer = RemoveGuardianCodeSerializer(junior_queryset, data=request.data, partial=True) if serializer.is_valid(): # save serializer serializer.save() From ab1a2be679617f456738bb08b3559b97177f90f8 Mon Sep 17 00:00:00 2001 From: jain Date: Thu, 24 Aug 2023 13:32:08 +0530 Subject: [PATCH 5/5] remove junior by guardian --- junior/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/junior/urls.py b/junior/urls.py index 08fe33a..3c597c3 100644 --- a/junior/urls.py +++ b/junior/urls.py @@ -62,5 +62,5 @@ urlpatterns = [ path('api/v1/reassign-task/', ReAssignJuniorTaskAPIView.as_view()), path('api/v1/complete-article/', CompleteArticleAPIView.as_view()), path('api/v1/read-article-card/', ReadArticleCardAPIView.as_view()), - path('api/v1/remove-guardian-code-request/', RemoveGuardianCodeAPIView.as_view()), + path('api/v1/remove-guardian-code-request/', RemoveGuardianCodeAPIView.as_view()) ]