From cf9376663ca1447e0b14d69e24cc2adf76f2a1fe Mon Sep 17 00:00:00 2001 From: jain Date: Sat, 26 Aug 2023 17:09:10 +0530 Subject: [PATCH 1/2] list of guardian code status --- guardian/serializers.py | 19 ++++- guardian/views.py | 80 ++++++++++++------- ...0030_remove_junior_guardian_code_status.py | 17 ++++ .../0031_junior_guardian_code_status.py | 19 +++++ junior/models.py | 6 +- junior/serializers.py | 42 +++++++--- junior/views.py | 46 ++++++----- zod_bank/settings.py | 52 ++++++------ 8 files changed, 185 insertions(+), 96 deletions(-) create mode 100644 junior/migrations/0030_remove_junior_guardian_code_status.py create mode 100644 junior/migrations/0031_junior_guardian_code_status.py diff --git a/guardian/serializers.py b/guardian/serializers.py index 76b99b5..2914b79 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -402,9 +402,13 @@ class ApproveJuniorSerializer(serializers.ModelSerializer): def create(self, validated_data): """update guardian code""" instance = self.context['junior'] - instance.guardian_code = [self.context['guardian_code']] - instance.guardian_code_approved = True - instance.guardian_code_status = str(NUMBER['two']) + guardian_code = self.context['guardian_code'] + print("guardian_code==>", guardian_code, '==>', type(guardian_code)) + print("instance.guardian_code==>", instance.guardian_code, '==>', + type(instance.guardian_code)) + index = instance.guardian_code.index(guardian_code) + print("index==>", index, '==>', type(index)) + instance.guardian_code_status[index] = str(NUMBER['two']) instance.save() return instance @@ -512,4 +516,11 @@ class GuardianDetailListSerializer(serializers.ModelSerializer): def get_guardian_code_status(self,obj): """guardian code status""" - return obj.junior.guardian_code_status + print("obj.guardian.guardian_code===>",obj.guardian.guardian_code,'===>',type(obj.guardian.guardian_code)) + print("obj.junior.guardian_code===>", obj.junior.guardian_code, '===>', type(obj.junior.guardian_code)) + if obj.guardian.guardian_code in obj.junior.guardian_code: + index = obj.junior.guardian_code.index(obj.guardian.guardian_code) + print("index===>", index, '===>', type(index)) + data = obj.junior.guardian_code_status[index] + print("data===>", data, '===>', type(data)) + return obj.junior.guardian_code_status diff --git a/guardian/views.py b/guardian/views.py index c565201..73ce914 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -179,36 +179,42 @@ class CreateTaskAPIView(viewsets.ModelViewSet): image = request.data['default_image'] junior = request.data['junior'] junior_id = Junior.objects.filter(id=junior).last() - guardian_data = Guardian.objects.filter(user=request.user).last() - if (guardian_data.guardian_code not in junior_id.guardian_code or - junior_id.guardian_code_status in guardian_code_tuple): - return custom_error_response(ERROR_CODE['2078'], response_status=status.HTTP_400_BAD_REQUEST) - allowed_extensions = ['.jpg', '.jpeg', '.png'] - if not any(extension in str(image) for extension in allowed_extensions): - return custom_error_response(ERROR_CODE['2048'], response_status=status.HTTP_400_BAD_REQUEST) - if not junior.isnumeric(): - """junior value must be integer""" - return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) - data = request.data - if 'https' in str(image): - image_data = image - else: - filename = f"images/{image}" - if image and image.size == NUMBER['zero']: - return custom_error_response(ERROR_CODE['2035'], response_status=status.HTTP_400_BAD_REQUEST) - image_url = upload_image_to_alibaba(image, filename) - image_data = image_url - data.pop('default_image') - # use TaskSerializer serializer - serializer = TaskSerializer(context={"user":request.user, "image":image_data}, data=data) - if serializer.is_valid(): - # save serializer - task = serializer.save() + if junior_id: + guardian_data = Guardian.objects.filter(user=request.user).last() + index = junior_id.guardian_code.index(guardian_data.guardian_code) + print("index===>", index, '===>', type(index)) + status_index = junior_id.guardian_code_status[index] + print("status_index===>", status_index, '===>', type(status_index)) + if status_index == str(NUMBER['three']): + return custom_error_response(ERROR_CODE['2078'], response_status=status.HTTP_400_BAD_REQUEST) + allowed_extensions = ['.jpg', '.jpeg', '.png'] + if not any(extension in str(image) for extension in allowed_extensions): + return custom_error_response(ERROR_CODE['2048'], response_status=status.HTTP_400_BAD_REQUEST) + if not junior.isnumeric(): + """junior value must be integer""" + return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) + data = request.data + if 'https' in str(image): + image_data = image + else: + filename = f"images/{image}" + if image and image.size == NUMBER['zero']: + return custom_error_response(ERROR_CODE['2035'], response_status=status.HTTP_400_BAD_REQUEST) + image_url = upload_image_to_alibaba(image, filename) + image_data = image_url + data.pop('default_image') + # use TaskSerializer serializer + serializer = TaskSerializer(context={"user":request.user, "image":image_data}, data=data) + if serializer.is_valid(): + # save serializer + task = serializer.save() - send_notification.delay(TASK_ASSIGNED, request.auth.payload['user_id'], GUARDIAN, - junior_id.auth.id, {'task_id': task.id}) - return custom_response(SUCCESS_CODE['3018'], serializer.data, response_status=status.HTTP_200_OK) - return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) + send_notification.delay(TASK_ASSIGNED, request.auth.payload['user_id'], GUARDIAN, + junior_id.auth.id, {'task_id': task.id}) + return custom_response(SUCCESS_CODE['3018'], serializer.data, response_status=status.HTTP_200_OK) + return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) + else: + 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) @@ -302,8 +308,20 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet): junior_queryset.auth.id) return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK) else: - junior_queryset.guardian_code = None - junior_queryset.guardian_code_status = str(NUMBER['one']) + print("#############################################") + if junior_queryset.guardian_code and ('-' in junior_queryset.guardian_code): + print("777777777777777") + junior_queryset.guardian_code.remove('-') + if junior_queryset.guardian_code_status and ('-' in junior_queryset.guardian_code_status): + print("666666666666666666666666") + junior_queryset.guardian_code_status.remove('-') + print("guardian.guardian_code==>", guardian.guardian_code, '==>', type(guardian.guardian_code)) + print("junior_queryset.guardian_code==>", junior_queryset.guardian_code, '==>', type(junior_queryset.guardian_code)) + index = junior_queryset.guardian_code.index(guardian.guardian_code) + print("index==>", index, '==>', type(index)) + junior_queryset.guardian_code.remove(guardian.guardian_code) + data = junior_queryset.guardian_code_status.pop(index) + print("data==>", data, '==>', type(data)) junior_queryset.save() send_notification.delay(ASSOCIATE_REJECTED, guardian.user.id, GUARDIAN, junior_queryset.auth.id) return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK) diff --git a/junior/migrations/0030_remove_junior_guardian_code_status.py b/junior/migrations/0030_remove_junior_guardian_code_status.py new file mode 100644 index 0000000..6949e9a --- /dev/null +++ b/junior/migrations/0030_remove_junior_guardian_code_status.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.2 on 2023-08-26 08:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('junior', '0029_junior_is_deleted'), + ] + + operations = [ + migrations.RemoveField( + model_name='junior', + name='guardian_code_status', + ), + ] diff --git a/junior/migrations/0031_junior_guardian_code_status.py b/junior/migrations/0031_junior_guardian_code_status.py new file mode 100644 index 0000000..c342f28 --- /dev/null +++ b/junior/migrations/0031_junior_guardian_code_status.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.2 on 2023-08-26 08:59 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('junior', '0030_remove_junior_guardian_code_status'), + ] + + operations = [ + migrations.AddField( + model_name='junior', + name='guardian_code_status', + field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, default=None, max_length=10, null=True), null=True, size=None), + ), + ] diff --git a/junior/models.py b/junior/models.py index 773557b..559acfe 100644 --- a/junior/models.py +++ b/junior/models.py @@ -76,9 +76,9 @@ class Junior(models.Model): is_verified = models.BooleanField(default=False) """guardian code is approved or not""" guardian_code_approved = models.BooleanField(default=False) - # guardian code status""" - guardian_code_status = models.CharField(max_length=31, choices=GUARDIAN_CODE_STATUS, default='1', - null=True, blank=True) + # # guardian code status""" + guardian_code_status = ArrayField(models.CharField(max_length=10, null=True, blank=True, default=None), null=True, + ) # Profile created and updated time""" created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) diff --git a/junior/serializers.py b/junior/serializers.py index 6ba4218..3497b37 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -92,16 +92,23 @@ class CreateJuniorSerializer(serializers.ModelSerializer): # condition for guardian code if guardian_code: if not junior.guardian_code: + print("111111111") junior.guardian_code = [] + junior.guardian_code_status = [] junior.guardian_code.extend(guardian_code) + junior.guardian_code_status.extend(str(NUMBER['three'])) elif len(junior.guardian_code) < 3 and len(guardian_code) < 3: + print("2222222222") junior.guardian_code.extend(guardian_code) + junior.guardian_code_status.extend(str(NUMBER['three'])) 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) - junior.guardian_code_status = str(NUMBER['three']) + # print("junior.guardian_code.index(guardian_code)==>",junior.guardian_code.index(guardian_code),'===>',type(junior.guardian_code.index(guardian_code))) + print("junior.guardian_code==>", junior.guardian_code, '===>', type(junior.guardian_code)) + junior_approval_mail.delay(user.email, user.first_name) send_notification.delay(ASSOCIATE_REQUEST, junior.auth.id, JUNIOR, guardian_data.user.id, {}) @@ -296,9 +303,9 @@ class AddJuniorSerializer(serializers.ModelSerializer): referral_code=generate_code(ZOD, user_data.id), referral_code_used=guardian_data.referral_code, is_password_set=False, is_verified=True, - guardian_code_status=GUARDIAN_CODE_STATUS[1][0]) + guardian_code_status=[str(NUMBER['two'])]) JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior_data, - relationship=relationship) + relationship=relationship) total_junior = Junior.objects.all().count() JuniorPoints.objects.create(junior=junior_data, position=total_junior) """Generate otp""" @@ -326,9 +333,18 @@ class RemoveJuniorSerializer(serializers.ModelSerializer): if instance: guardian_code = self.context['guardian_code'] instance.is_invited = False + if instance.guardian_code and ('-' in instance.guardian_code): + print("1111111111111") + instance.guardian_code.remove('-') + print("instance.guardian_code==>",instance.guardian_code,'==>',type(instance.guardian_code),'===>', + len(instance.guardian_code)) + print("instance.guardian_code_status==>", instance.guardian_code_status, '==>', type(instance.guardian_code_status), '===>', + len(instance.guardian_code_status)) + index = instance.guardian_code.index(guardian_code) + print("index==>",index,'==>',type(index)) instance.guardian_code.remove(guardian_code) - if not instance.guardian_code: - instance.guardian_code_status = str(NUMBER['one']) + data = instance.guardian_code_status.pop(index) + print("data==>", data, '==>', type(data)) instance.save() return instance @@ -506,15 +522,19 @@ class RemoveGuardianCodeSerializer(serializers.ModelSerializer): def update(self, instance, validated_data): guardian_code = self.context['guardian_code'] if guardian_code in instance.guardian_code: + if instance.guardian_code and ('-' in instance.guardian_code): + print("777777777777777") + instance.guardian_code.remove('-') + if instance.guardian_code_status and ('-' in instance.guardian_code_status): + print("666666666666666666666666") + instance.guardian_code_status.remove('-') + index = instance.guardian_code.index(guardian_code) + print("index===>",index,'===>',type(index)) instance.guardian_code.remove(guardian_code) + data = instance.guardian_code_status.pop(index) + print("data===>", data, '===>', type(data)) 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 e7f5815..7e8831f 100644 --- a/junior/views.py +++ b/junior/views.py @@ -99,7 +99,10 @@ 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: - error_detail = e.detail.get('error', None) + if e.detail: + error_detail = e.detail.get('error', None) + else: + error_detail = str(e) return custom_error_response(error_detail, response_status=status.HTTP_400_BAD_REQUEST) class ValidateGuardianCode(viewsets.ModelViewSet): @@ -191,7 +194,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet): return custom_error_response(ERROR_CODE['2077'], response_status=status.HTTP_400_BAD_REQUEST) elif not data: return custom_error_response(ERROR_CODE['2076'], response_status=status.HTTP_400_BAD_REQUEST) - if data == "Max": + elif data == "Max": return custom_error_response(ERROR_CODE['2081'], response_status=status.HTTP_400_BAD_REQUEST) return custom_response(SUCCESS_CODE['3021'], response_status=status.HTTP_200_OK) # use AddJuniorSerializer serializer @@ -208,6 +211,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet): 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): + print("1111111111111") junior.guardian_code.remove('-') if not junior: return none @@ -219,7 +223,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet): junior.guardian_code.append(guardian.guardian_code) else: return "Max" - junior.guardian_code_status = str(NUMBER['two']) + junior.guardian_code_status = [str(NUMBER['two'])] junior.save() JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior, relationship=str(self.request.data['relationship'])) @@ -736,24 +740,24 @@ class RemoveGuardianCodeAPIView(views.APIView): 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, context = {"guardian_code":guardian_code}, - data=request.data, partial=True) - if serializer.is_valid(): - # save serializer - serializer.save() - return custom_response(SUCCESS_CODE['3044'], response_status=status.HTTP_200_OK) - return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) - else: - # task in another state - return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) - except Exception as e: - error_detail = e.detail.get('error', None) - return custom_error_response(error_detail, response_status=status.HTTP_400_BAD_REQUEST) + # 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, context = {"guardian_code":guardian_code}, + data=request.data, partial=True) + if serializer.is_valid(): + # save serializer + serializer.save() + return custom_response(SUCCESS_CODE['3044'], response_status=status.HTTP_200_OK) + return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) + else: + # task in another state + return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) + # except Exception as e: + # 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, diff --git a/zod_bank/settings.py b/zod_bank/settings.py index 781df80..74ca6e9 100644 --- a/zod_bank/settings.py +++ b/zod_bank/settings.py @@ -181,32 +181,32 @@ AUTH_PASSWORD_VALIDATORS = [ # database query logs settings # Allows us to check db hits # useful to optimize db query and hit -LOGGING = { - "version": 1, - "filters": { - "require_debug_true": { - "()": "django.utils.log.RequireDebugTrue" - } - }, - "handlers": { - "console": { - "level": "DEBUG", - "filters": [ - "require_debug_true" - ], - "class": "logging.StreamHandler" - } - }, - # database logger - "loggers": { - "django.db.backends": { - "level": "DEBUG", - "handlers": [ - "console" - ] - } - } -} +# LOGGING = { +# "version": 1, +# "filters": { +# "require_debug_true": { +# "()": "django.utils.log.RequireDebugTrue" +# } +# }, +# "handlers": { +# "console": { +# "level": "DEBUG", +# "filters": [ +# "require_debug_true" +# ], +# "class": "logging.StreamHandler" +# } +# }, +# # database logger +# "loggers": { +# "django.db.backends": { +# "level": "DEBUG", +# "handlers": [ +# "console" +# ] +# } +# } +# } # Internationalization # https://docs.djangoproject.com/en/3.0/topics/i18n/ From eb4e09964d05670cd4d0c56f5de54ddad48d046e Mon Sep 17 00:00:00 2001 From: jain Date: Sat, 26 Aug 2023 17:48:13 +0530 Subject: [PATCH 2/2] changes of guardian code status in necessary API --- guardian/serializers.py | 10 +------- guardian/views.py | 13 ++--------- junior/serializers.py | 26 ++++----------------- junior/views.py | 43 +++++++++++++++++----------------- zod_bank/settings.py | 52 ++++++++++++++++++++--------------------- 5 files changed, 56 insertions(+), 88 deletions(-) diff --git a/guardian/serializers.py b/guardian/serializers.py index 2914b79..4206d7a 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -403,11 +403,7 @@ class ApproveJuniorSerializer(serializers.ModelSerializer): """update guardian code""" instance = self.context['junior'] guardian_code = self.context['guardian_code'] - print("guardian_code==>", guardian_code, '==>', type(guardian_code)) - print("instance.guardian_code==>", instance.guardian_code, '==>', - type(instance.guardian_code)) index = instance.guardian_code.index(guardian_code) - print("index==>", index, '==>', type(index)) instance.guardian_code_status[index] = str(NUMBER['two']) instance.save() return instance @@ -516,11 +512,7 @@ class GuardianDetailListSerializer(serializers.ModelSerializer): def get_guardian_code_status(self,obj): """guardian code status""" - print("obj.guardian.guardian_code===>",obj.guardian.guardian_code,'===>',type(obj.guardian.guardian_code)) - print("obj.junior.guardian_code===>", obj.junior.guardian_code, '===>', type(obj.junior.guardian_code)) if obj.guardian.guardian_code in obj.junior.guardian_code: index = obj.junior.guardian_code.index(obj.guardian.guardian_code) - print("index===>", index, '===>', type(index)) data = obj.junior.guardian_code_status[index] - print("data===>", data, '===>', type(data)) - return obj.junior.guardian_code_status + return data diff --git a/guardian/views.py b/guardian/views.py index 73ce914..ddd6231 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -182,9 +182,7 @@ class CreateTaskAPIView(viewsets.ModelViewSet): if junior_id: guardian_data = Guardian.objects.filter(user=request.user).last() index = junior_id.guardian_code.index(guardian_data.guardian_code) - print("index===>", index, '===>', type(index)) status_index = junior_id.guardian_code_status[index] - print("status_index===>", status_index, '===>', type(status_index)) if status_index == str(NUMBER['three']): return custom_error_response(ERROR_CODE['2078'], response_status=status.HTTP_400_BAD_REQUEST) allowed_extensions = ['.jpg', '.jpeg', '.png'] @@ -308,20 +306,13 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet): junior_queryset.auth.id) return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK) else: - print("#############################################") if junior_queryset.guardian_code and ('-' in junior_queryset.guardian_code): - print("777777777777777") junior_queryset.guardian_code.remove('-') if junior_queryset.guardian_code_status and ('-' in junior_queryset.guardian_code_status): - print("666666666666666666666666") junior_queryset.guardian_code_status.remove('-') - print("guardian.guardian_code==>", guardian.guardian_code, '==>', type(guardian.guardian_code)) - print("junior_queryset.guardian_code==>", junior_queryset.guardian_code, '==>', type(junior_queryset.guardian_code)) index = junior_queryset.guardian_code.index(guardian.guardian_code) - print("index==>", index, '==>', type(index)) junior_queryset.guardian_code.remove(guardian.guardian_code) - data = junior_queryset.guardian_code_status.pop(index) - print("data==>", data, '==>', type(data)) + junior_queryset.guardian_code_status.pop(index) junior_queryset.save() send_notification.delay(ASSOCIATE_REJECTED, guardian.user.id, GUARDIAN, junior_queryset.auth.id) return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK) @@ -372,7 +363,7 @@ class ApproveTaskAPIView(viewsets.ModelViewSet): return custom_error_response(ERROR_CODE['2038'], response_status=status.HTTP_400_BAD_REQUEST) except Exception as e: return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) - +# class GuardianListAPIView(viewsets.ModelViewSet): """Guardian list of assosicated junior""" diff --git a/junior/serializers.py b/junior/serializers.py index 3497b37..33210d8 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -92,13 +92,11 @@ class CreateJuniorSerializer(serializers.ModelSerializer): # condition for guardian code if guardian_code: if not junior.guardian_code: - print("111111111") junior.guardian_code = [] junior.guardian_code_status = [] junior.guardian_code.extend(guardian_code) junior.guardian_code_status.extend(str(NUMBER['three'])) elif len(junior.guardian_code) < 3 and len(guardian_code) < 3: - print("2222222222") junior.guardian_code.extend(guardian_code) junior.guardian_code_status.extend(str(NUMBER['three'])) else: @@ -106,9 +104,6 @@ class CreateJuniorSerializer(serializers.ModelSerializer): guardian_data = Guardian.objects.filter(guardian_code=guardian_code[0]).last() if guardian_data: JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior) - # print("junior.guardian_code.index(guardian_code)==>",junior.guardian_code.index(guardian_code),'===>',type(junior.guardian_code.index(guardian_code))) - print("junior.guardian_code==>", junior.guardian_code, '===>', type(junior.guardian_code)) - junior_approval_mail.delay(user.email, user.first_name) send_notification.delay(ASSOCIATE_REQUEST, junior.auth.id, JUNIOR, guardian_data.user.id, {}) @@ -304,8 +299,8 @@ class AddJuniorSerializer(serializers.ModelSerializer): referral_code_used=guardian_data.referral_code, is_password_set=False, is_verified=True, guardian_code_status=[str(NUMBER['two'])]) - JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior_data, - relationship=relationship) + JuniorGuardianRelationship.objects.create(guardian=guardian_data, junior=junior_data, + relationship=relationship) total_junior = Junior.objects.all().count() JuniorPoints.objects.create(junior=junior_data, position=total_junior) """Generate otp""" @@ -334,17 +329,10 @@ class RemoveJuniorSerializer(serializers.ModelSerializer): guardian_code = self.context['guardian_code'] instance.is_invited = False if instance.guardian_code and ('-' in instance.guardian_code): - print("1111111111111") instance.guardian_code.remove('-') - print("instance.guardian_code==>",instance.guardian_code,'==>',type(instance.guardian_code),'===>', - len(instance.guardian_code)) - print("instance.guardian_code_status==>", instance.guardian_code_status, '==>', type(instance.guardian_code_status), '===>', - len(instance.guardian_code_status)) index = instance.guardian_code.index(guardian_code) - print("index==>",index,'==>',type(index)) instance.guardian_code.remove(guardian_code) - data = instance.guardian_code_status.pop(index) - print("data==>", data, '==>', type(data)) + instance.guardian_code_status.pop(index) instance.save() return instance @@ -463,7 +451,7 @@ class AddGuardianSerializer(serializers.ModelSerializer): user_type=str(NUMBER['two']), expired_at=expiry_time, is_verified=True) UserNotification.objects.get_or_create(user=user) - JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior_data, + JuniorGuardianRelationship.objects.create(guardian=guardian_data, junior=junior_data, relationship=relationship) """Notification email""" @@ -523,16 +511,12 @@ class RemoveGuardianCodeSerializer(serializers.ModelSerializer): guardian_code = self.context['guardian_code'] if guardian_code in instance.guardian_code: if instance.guardian_code and ('-' in instance.guardian_code): - print("777777777777777") instance.guardian_code.remove('-') if instance.guardian_code_status and ('-' in instance.guardian_code_status): - print("666666666666666666666666") instance.guardian_code_status.remove('-') index = instance.guardian_code.index(guardian_code) - print("index===>",index,'===>',type(index)) instance.guardian_code.remove(guardian_code) - data = instance.guardian_code_status.pop(index) - print("data===>", data, '===>', type(data)) + instance.guardian_code_status.pop(index) else: raise serializers.ValidationError({"error":ERROR_CODE['2082'],"code":"400", "status":"failed"}) instance.save() diff --git a/junior/views.py b/junior/views.py index 7e8831f..37c4e01 100644 --- a/junior/views.py +++ b/junior/views.py @@ -211,7 +211,6 @@ class AddJuniorAPIView(viewsets.ModelViewSet): 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): - print("1111111111111") junior.guardian_code.remove('-') if not junior: return none @@ -225,8 +224,10 @@ class AddJuniorAPIView(viewsets.ModelViewSet): return "Max" junior.guardian_code_status = [str(NUMBER['two'])] junior.save() - JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior, - relationship=str(self.request.data['relationship'])) + jun_data, created = JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior) + if jun_data: + jun_data.relationship = str(self.request.data['relationship']) + jun_data.save() return True @@ -740,24 +741,24 @@ class RemoveGuardianCodeAPIView(views.APIView): 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, context = {"guardian_code":guardian_code}, - data=request.data, partial=True) - if serializer.is_valid(): - # save serializer - serializer.save() - return custom_response(SUCCESS_CODE['3044'], response_status=status.HTTP_200_OK) - return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) - else: - # task in another state - return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) - # except Exception as e: - # error_detail = e.detail.get('error', None) - # return custom_error_response(error_detail, response_status=status.HTTP_400_BAD_REQUEST) + 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, context = {"guardian_code":guardian_code}, + data=request.data, partial=True) + if serializer.is_valid(): + # save serializer + serializer.save() + return custom_response(SUCCESS_CODE['3044'], response_status=status.HTTP_200_OK) + return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) + else: + # task in another state + return custom_error_response(ERROR_CODE['2047'], response_status=status.HTTP_400_BAD_REQUEST) + except Exception as e: + 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, diff --git a/zod_bank/settings.py b/zod_bank/settings.py index 74ca6e9..781df80 100644 --- a/zod_bank/settings.py +++ b/zod_bank/settings.py @@ -181,32 +181,32 @@ AUTH_PASSWORD_VALIDATORS = [ # database query logs settings # Allows us to check db hits # useful to optimize db query and hit -# LOGGING = { -# "version": 1, -# "filters": { -# "require_debug_true": { -# "()": "django.utils.log.RequireDebugTrue" -# } -# }, -# "handlers": { -# "console": { -# "level": "DEBUG", -# "filters": [ -# "require_debug_true" -# ], -# "class": "logging.StreamHandler" -# } -# }, -# # database logger -# "loggers": { -# "django.db.backends": { -# "level": "DEBUG", -# "handlers": [ -# "console" -# ] -# } -# } -# } +LOGGING = { + "version": 1, + "filters": { + "require_debug_true": { + "()": "django.utils.log.RequireDebugTrue" + } + }, + "handlers": { + "console": { + "level": "DEBUG", + "filters": [ + "require_debug_true" + ], + "class": "logging.StreamHandler" + } + }, + # database logger + "loggers": { + "django.db.backends": { + "level": "DEBUG", + "handlers": [ + "console" + ] + } + } +} # Internationalization # https://docs.djangoproject.com/en/3.0/topics/i18n/