From d1a4b86b092451ed2f9e2356150d6df9782a7d99 Mon Sep 17 00:00:00 2001 From: abutalib-kiwi Date: Wed, 13 Sep 2023 18:15:07 +0530 Subject: [PATCH] fixed guardian reject issue, updated ids in notification method, remove unnecessary condition from analytics and user management --- base/tasks.py | 6 +++--- celerybeat-schedule | Bin 20480 -> 20480 bytes guardian/serializers.py | 12 ++++++------ guardian/utils.py | 2 +- guardian/views.py | 15 ++++++++++----- junior/serializers.py | 10 +++++----- junior/views.py | 4 ++-- web_admin/serializers/analytics_serializer.py | 2 -- .../serializers/user_management_serializer.py | 10 ---------- 9 files changed, 27 insertions(+), 34 deletions(-) diff --git a/base/tasks.py b/base/tasks.py index fbeca1d..24893fc 100644 --- a/base/tasks.py +++ b/base/tasks.py @@ -53,11 +53,11 @@ def notify_task_expiry(): (datetime.datetime.now().date() + datetime.timedelta(days=1))]) if pending_tasks := all_pending_tasks.filter(task_status=PENDING): for task in pending_tasks: - send_notification(PENDING_TASK_EXPIRING, None, None, task.junior.auth.id, + send_notification(PENDING_TASK_EXPIRING, None, None, task.junior.auth_id, {'task_id': task.id}) if in_progress_tasks := all_pending_tasks.filter(task_status=IN_PROGRESS): for task in in_progress_tasks: - send_notification(IN_PROGRESS_TASK_EXPIRING, task.junior.auth.id, JUNIOR, task.guardian.user.id, + send_notification(IN_PROGRESS_TASK_EXPIRING, task.junior.auth_id, JUNIOR, task.guardian.user_id, {'task_id': task.id}) return True @@ -80,7 +80,7 @@ def notify_top_junior(): prev_top_position = junior_points_qs.filter(position=1).first() new_top_position = junior_points_qs.filter(rank=1).first() if prev_top_position != new_top_position: - send_notification_multiple_user(TOP_JUNIOR, new_top_position.junior.auth.id, JUNIOR, + send_notification_multiple_user(TOP_JUNIOR, new_top_position.junior.auth_id, JUNIOR, {'points': new_top_position.total_points}) for junior_point in junior_points_qs: junior_point.position = junior_point.rank diff --git a/celerybeat-schedule b/celerybeat-schedule index 7638e5252440a76df3a3df6b009f2805ccced487..2a485155d19184dae02b3e94bd235de358a96af7 100644 GIT binary patch delta 74 zcmZozz}T>Wal>2(c3vJ?Io{?MlNXo=GIC5du+f|>@0czC7Tu*ZB}1%jO3)N;H%mG_=LG;?!xzK= delta 74 zcmZozz}T>Wal>2(b`B0XMov@S$qUQ_8QCWr*l13ccT5)mi+0sa$q;Ls5;Vn|ck(pH VVgU{=1_s9DYM9`H&5};fc>xRT7ApV% diff --git a/guardian/serializers.py b/guardian/serializers.py index f78c237..a49286b 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -243,8 +243,8 @@ class TaskSerializer(serializers.ModelSerializer): task_data['junior'] = junior instance = JuniorTask.objects.create(**task_data) tasks_created.append(instance) - send_notification.delay(TASK_ASSIGNED, guardian.user.id, GUARDIAN, - junior.auth.id, {'task_id': instance.id}) + send_notification.delay(TASK_ASSIGNED, guardian.user_id, GUARDIAN, + junior.auth_id, {'task_id': instance.id}) return instance class GuardianDetailSerializer(serializers.ModelSerializer): @@ -443,8 +443,8 @@ class ApproveTaskSerializer(serializers.ModelSerializer): # update complete time of task # instance.completed_on = real_time() instance.completed_on = timezone.now().astimezone(pytz.utc) - send_notification.delay(TASK_APPROVED, instance.guardian.user.id, GUARDIAN, - junior_details.auth.id, {'task_id': instance.id}) + send_notification.delay(TASK_APPROVED, instance.guardian.user_id, GUARDIAN, + junior_details.auth_id, {'task_id': instance.id}) else: # reject the task instance.task_status = str(NUMBER['three']) @@ -452,8 +452,8 @@ class ApproveTaskSerializer(serializers.ModelSerializer): # update reject time of task # instance.rejected_on = real_time() instance.rejected_on = timezone.now().astimezone(pytz.utc) - send_notification.delay(TASK_REJECTED, instance.guardian.user.id, GUARDIAN, - junior_details.auth.id, {'task_id': instance.id}) + send_notification.delay(TASK_REJECTED, instance.guardian.user_id, GUARDIAN, + junior_details.auth_id, {'task_id': instance.id}) instance.save() junior_data.save() return junior_details diff --git a/guardian/utils.py b/guardian/utils.py index 1d40c34..3360285 100644 --- a/guardian/utils.py +++ b/guardian/utils.py @@ -117,7 +117,7 @@ def update_referral_points(referral_code, referral_code_used): junior_query.total_points = junior_query.total_points + NUMBER['five'] junior_query.referral_points = junior_query.referral_points + NUMBER['five'] junior_query.save() - send_notification.delay(REFERRAL_POINTS, None, None, junior_queryset.auth.id, {}) + send_notification.delay(REFERRAL_POINTS, None, None, junior_queryset.auth_id, {}) diff --git a/guardian/views.py b/guardian/views.py index c4e952e..824f6ff 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -304,9 +304,13 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet): "action":"1"} """ try: - guardian = Guardian.objects.filter(user__email=self.request.user).last() + relation_obj = JuniorGuardianRelationship.objects.filter( + guardian__user__email=self.request.user, + junior__id=self.request.data.get('junior_id') + ).select_related('guardian', 'junior').first() + guardian = relation_obj.guardian # fetch junior query - junior_queryset = Junior.objects.filter(id=self.request.data.get('junior_id')).last() + junior_queryset = relation_obj.junior if junior_queryset and (junior_queryset.is_deleted or not junior_queryset.is_active): return custom_error_response(ERROR_CODE['2073'], response_status=status.HTTP_400_BAD_REQUEST) # action 1 is use for approve and 2 for reject @@ -319,8 +323,8 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet): if serializer.is_valid(): # save serializer serializer.save() - send_notification.delay(ASSOCIATE_APPROVED, guardian.user.id, GUARDIAN, - junior_queryset.auth.id, {}) + send_notification.delay(ASSOCIATE_APPROVED, guardian.user_id, GUARDIAN, + junior_queryset.auth_id, {}) return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK) else: if junior_queryset.guardian_code and ('-' in junior_queryset.guardian_code): @@ -331,7 +335,8 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet): junior_queryset.guardian_code.remove(guardian.guardian_code) junior_queryset.guardian_code_status.pop(index) junior_queryset.save() - send_notification.delay(ASSOCIATE_REJECTED, guardian.user.id, GUARDIAN, junior_queryset.auth.id, {}) + send_notification.delay(ASSOCIATE_REJECTED, guardian.user_id, GUARDIAN, junior_queryset.auth_id, {}) + relation_obj.delete() 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) diff --git a/junior/serializers.py b/junior/serializers.py index aba9b12..6b765dc 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -107,7 +107,7 @@ 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) - send_notification.delay(ASSOCIATE_REQUEST, junior.auth.id, JUNIOR, guardian_data.user.id, {}) + send_notification.delay(ASSOCIATE_REQUEST, junior.auth_id, JUNIOR, guardian_data.user_id, {}) junior_approval_mail.delay(user.email, user.first_name) junior.dob = validated_data.get('dob', junior.dob) junior.passcode = validated_data.get('passcode', junior.passcode) @@ -323,7 +323,7 @@ class AddJuniorSerializer(serializers.ModelSerializer): """Notification email""" junior_notification_email.delay(email, full_name, email, special_password) # push notification - send_notification.delay(ASSOCIATE_JUNIOR, None, None, junior_data.auth.id, {}) + send_notification.delay(ASSOCIATE_JUNIOR, None, None, junior_data.auth_id, {}) return junior_data @@ -359,8 +359,8 @@ class CompleteTaskSerializer(serializers.ModelSerializer): instance.task_status = str(NUMBER['four']) instance.is_approved = False instance.save() - send_notification.delay(TASK_ACTION, instance.junior.auth.id, JUNIOR, - instance.guardian.user.id, {'task_id': instance.id}) + send_notification.delay(TASK_ACTION, instance.junior.auth_id, JUNIOR, + instance.guardian.user_id, {'task_id': instance.id}) return instance class JuniorPointsSerializer(serializers.ModelSerializer): @@ -467,7 +467,7 @@ class AddGuardianSerializer(serializers.ModelSerializer): """Notification email""" junior_notification_email(email, full_name, email, password) junior_approval_mail.delay(email, full_name) - send_notification.delay(ASSOCIATE_REQUEST, junior_data.auth.id, JUNIOR, guardian_data.user.id, {}) + send_notification.delay(ASSOCIATE_REQUEST, junior_data.auth_id, JUNIOR, guardian_data.user_id, {}) return guardian_data class StartTaskSerializer(serializers.ModelSerializer): diff --git a/junior/views.py b/junior/views.py index 3d7ab31..e6bd606 100644 --- a/junior/views.py +++ b/junior/views.py @@ -263,7 +263,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet): if jun_data: jun_data.relationship = str(self.request.data['relationship']) jun_data.save() - send_notification.delay(ASSOCIATE_EXISTING_JUNIOR, self.request.user.id, GUARDIAN, junior.auth.id, {}) + send_notification.delay(ASSOCIATE_EXISTING_JUNIOR, guardian.user_id, GUARDIAN, junior.auth_id, {}) return True @@ -362,7 +362,7 @@ class RemoveJuniorAPIView(views.APIView): # save serializer serializer.save() JuniorGuardianRelationship.objects.filter(guardian=guardian, junior=junior_queryset).delete() - send_notification.delay(REMOVE_JUNIOR, None, None, junior_queryset.auth.id, {}) + send_notification.delay(REMOVE_JUNIOR, None, None, junior_queryset.auth_id, {}) return custom_response(SUCCESS_CODE['3022'], serializer.data, response_status=status.HTTP_200_OK) return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST) else: diff --git a/web_admin/serializers/analytics_serializer.py b/web_admin/serializers/analytics_serializer.py index cc81f46..d744674 100644 --- a/web_admin/serializers/analytics_serializer.py +++ b/web_admin/serializers/analytics_serializer.py @@ -115,8 +115,6 @@ class UserCSVReportSerializer(serializers.ModelSerializer): if profile := (obj.guardian_profile.all().first() or obj.junior_profile.all().first()): return f"+{profile.country_code}{profile.phone}" \ if profile.country_code and profile.phone else profile.phone - else: - return None @staticmethod def get_user_type(obj): diff --git a/web_admin/serializers/user_management_serializer.py b/web_admin/serializers/user_management_serializer.py index c8d0b1f..713d984 100644 --- a/web_admin/serializers/user_management_serializer.py +++ b/web_admin/serializers/user_management_serializer.py @@ -50,8 +50,6 @@ class UserManagementListSerializer(serializers.ModelSerializer): return profile.country_code if profile.country_code else None elif profile := obj.junior_profile.all().first(): return profile.country_code if profile.country_code else None - else: - return None @staticmethod def get_phone(obj): @@ -63,8 +61,6 @@ class UserManagementListSerializer(serializers.ModelSerializer): return profile.phone if profile.phone else None elif profile := obj.junior_profile.all().first(): return profile.phone if profile.phone else None - else: - return None @staticmethod def get_user_type(obj): @@ -76,8 +72,6 @@ class UserManagementListSerializer(serializers.ModelSerializer): return dict(USER_TYPE).get('2') elif obj.junior_profile.all().first(): return dict(USER_TYPE).get('1') - else: - return None @staticmethod def get_is_active(obj): @@ -89,8 +83,6 @@ class UserManagementListSerializer(serializers.ModelSerializer): return profile.is_active elif profile := obj.junior_profile.all().first(): return profile.is_active - else: - return obj.is_active class GuardianSerializer(serializers.ModelSerializer): @@ -292,5 +284,3 @@ class UserManagementDetailSerializer(serializers.ModelSerializer): is_verified=True).select_related('user') serializer = GuardianSerializer(guardian, many=True) return serializer.data - else: - return None