diff --git a/base/messages.py b/base/messages.py index 9afbe4f..8ad5234 100644 --- a/base/messages.py +++ b/base/messages.py @@ -107,7 +107,8 @@ ERROR_CODE = { "2078": "This junior is not associate with you", "2079": "Please update your app version for enjoying uninterrupted services", "2080": "Can not add App version", - "2081": "You can not add more than 3 guardian" + "2081": "You can not add more than 3 guardian", + "2082": "Guardian code does not exist" } """Success message code""" diff --git a/guardian/utils.py b/guardian/utils.py index 14bd36a..ed4f338 100644 --- a/guardian/utils.py +++ b/guardian/utils.py @@ -127,7 +127,7 @@ def update_expired_task_status(data=None): Update task of the status if due date is in past """ try: - task_status = [str(NUMBER['one']), str(NUMBER['two']), str(NUMBER['four'])] + task_status = [str(NUMBER['one']), str(NUMBER['two'])] JuniorTask.objects.filter(due_date__lt=datetime.today().date(), task_status__in=task_status).update(task_status=str(NUMBER['six'])) except ObjectDoesNotExist as e: diff --git a/junior/serializers.py b/junior/serializers.py index f4dd8ef..09d4241 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -508,8 +508,17 @@ 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 guardian_code in instance.guardian_code: + instance.guardian_code.remove(guardian_code) + else: + raise serializers.ValidationError({"error":ERROR_CODE['2082'],"code":"400", "status":"failed"}) + if not instance.guardian_code: + instance.guardian_code_status = str(NUMBER['one']) + elif instance.guardian_code and (len(instance.guardian_code) == 1 and '-' in instance.guardian_code): + instance.guardian_code_status = str(NUMBER['one']) + else: + instance.guardian_code_status = str(NUMBER['two']) instance.save() return instance diff --git a/junior/views.py b/junior/views.py index e1d03d1..c4297e9 100644 --- a/junior/views.py +++ b/junior/views.py @@ -207,13 +207,15 @@ class AddJuniorAPIView(viewsets.ModelViewSet): def associate_guardian(self, user): junior = Junior.objects.filter(auth__email=self.request.data['email']).first() guardian = Guardian.objects.filter(user=self.request.user).first() + if junior.guardian_code and ('-' in junior.guardian_code): + junior.guardian_code.remove('-') if not junior: return none if junior.guardian_code and (guardian.guardian_code in junior.guardian_code): return False if not junior.guardian_code: junior.guardian_code = [guardian.guardian_code] - if type(junior.guardian_code) is list and len(junior.guardian_code) < 4: + if type(junior.guardian_code) is list and len(junior.guardian_code) < 3: junior.guardian_code.append(guardian.guardian_code) else: return "Max" @@ -724,16 +726,21 @@ class CreateArticleCardAPIView(viewsets.ModelViewSet): class RemoveGuardianCodeAPIView(views.APIView): """Remove guardian code request API - No Payload""" + Payload + {"guardian_code" + :"GRD037" + }""" serializer_class = RemoveGuardianCodeSerializer permission_classes = [IsAuthenticated] def put(self, request, format=None): try: + guardian_code = self.request.data.get("guardian_code") junior_queryset = Junior.objects.filter(auth=self.request.user).last() if junior_queryset: # use RemoveGuardianCodeSerializer serializer - serializer = RemoveGuardianCodeSerializer(junior_queryset, data=request.data, partial=True) + serializer = RemoveGuardianCodeSerializer(junior_queryset, context = {"guardian_code":guardian_code}, + data=request.data, partial=True) if serializer.is_valid(): # save serializer serializer.save() @@ -743,7 +750,8 @@ class RemoveGuardianCodeAPIView(views.APIView): # task in another state return custom_error_response(ERROR_CODE['2047'], 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 FAQViewSet(GenericViewSet, mixins.CreateModelMixin,