mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 01:55:21 +00:00
fixed guardian reject issue, updated ids in notification method, remove unnecessary condition from analytics and user management
This commit is contained in:
@ -53,11 +53,11 @@ def notify_task_expiry():
|
|||||||
(datetime.datetime.now().date() + datetime.timedelta(days=1))])
|
(datetime.datetime.now().date() + datetime.timedelta(days=1))])
|
||||||
if pending_tasks := all_pending_tasks.filter(task_status=PENDING):
|
if pending_tasks := all_pending_tasks.filter(task_status=PENDING):
|
||||||
for task in pending_tasks:
|
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})
|
{'task_id': task.id})
|
||||||
if in_progress_tasks := all_pending_tasks.filter(task_status=IN_PROGRESS):
|
if in_progress_tasks := all_pending_tasks.filter(task_status=IN_PROGRESS):
|
||||||
for task in in_progress_tasks:
|
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})
|
{'task_id': task.id})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ def notify_top_junior():
|
|||||||
prev_top_position = junior_points_qs.filter(position=1).first()
|
prev_top_position = junior_points_qs.filter(position=1).first()
|
||||||
new_top_position = junior_points_qs.filter(rank=1).first()
|
new_top_position = junior_points_qs.filter(rank=1).first()
|
||||||
if prev_top_position != new_top_position:
|
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})
|
{'points': new_top_position.total_points})
|
||||||
for junior_point in junior_points_qs:
|
for junior_point in junior_points_qs:
|
||||||
junior_point.position = junior_point.rank
|
junior_point.position = junior_point.rank
|
||||||
|
Binary file not shown.
@ -243,8 +243,8 @@ class TaskSerializer(serializers.ModelSerializer):
|
|||||||
task_data['junior'] = junior
|
task_data['junior'] = junior
|
||||||
instance = JuniorTask.objects.create(**task_data)
|
instance = JuniorTask.objects.create(**task_data)
|
||||||
tasks_created.append(instance)
|
tasks_created.append(instance)
|
||||||
send_notification.delay(TASK_ASSIGNED, guardian.user.id, GUARDIAN,
|
send_notification.delay(TASK_ASSIGNED, guardian.user_id, GUARDIAN,
|
||||||
junior.auth.id, {'task_id': instance.id})
|
junior.auth_id, {'task_id': instance.id})
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
class GuardianDetailSerializer(serializers.ModelSerializer):
|
class GuardianDetailSerializer(serializers.ModelSerializer):
|
||||||
@ -443,8 +443,8 @@ class ApproveTaskSerializer(serializers.ModelSerializer):
|
|||||||
# update complete time of task
|
# update complete time of task
|
||||||
# instance.completed_on = real_time()
|
# instance.completed_on = real_time()
|
||||||
instance.completed_on = timezone.now().astimezone(pytz.utc)
|
instance.completed_on = timezone.now().astimezone(pytz.utc)
|
||||||
send_notification.delay(TASK_APPROVED, instance.guardian.user.id, GUARDIAN,
|
send_notification.delay(TASK_APPROVED, instance.guardian.user_id, GUARDIAN,
|
||||||
junior_details.auth.id, {'task_id': instance.id})
|
junior_details.auth_id, {'task_id': instance.id})
|
||||||
else:
|
else:
|
||||||
# reject the task
|
# reject the task
|
||||||
instance.task_status = str(NUMBER['three'])
|
instance.task_status = str(NUMBER['three'])
|
||||||
@ -452,8 +452,8 @@ class ApproveTaskSerializer(serializers.ModelSerializer):
|
|||||||
# update reject time of task
|
# update reject time of task
|
||||||
# instance.rejected_on = real_time()
|
# instance.rejected_on = real_time()
|
||||||
instance.rejected_on = timezone.now().astimezone(pytz.utc)
|
instance.rejected_on = timezone.now().astimezone(pytz.utc)
|
||||||
send_notification.delay(TASK_REJECTED, instance.guardian.user.id, GUARDIAN,
|
send_notification.delay(TASK_REJECTED, instance.guardian.user_id, GUARDIAN,
|
||||||
junior_details.auth.id, {'task_id': instance.id})
|
junior_details.auth_id, {'task_id': instance.id})
|
||||||
instance.save()
|
instance.save()
|
||||||
junior_data.save()
|
junior_data.save()
|
||||||
return junior_details
|
return junior_details
|
||||||
|
@ -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.total_points = junior_query.total_points + NUMBER['five']
|
||||||
junior_query.referral_points = junior_query.referral_points + NUMBER['five']
|
junior_query.referral_points = junior_query.referral_points + NUMBER['five']
|
||||||
junior_query.save()
|
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, {})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -304,9 +304,13 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
"action":"1"}
|
"action":"1"}
|
||||||
"""
|
"""
|
||||||
try:
|
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
|
# 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):
|
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)
|
return custom_error_response(ERROR_CODE['2073'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
# action 1 is use for approve and 2 for reject
|
# action 1 is use for approve and 2 for reject
|
||||||
@ -319,8 +323,8 @@ class ApproveJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
# save serializer
|
# save serializer
|
||||||
serializer.save()
|
serializer.save()
|
||||||
send_notification.delay(ASSOCIATE_APPROVED, guardian.user.id, GUARDIAN,
|
send_notification.delay(ASSOCIATE_APPROVED, guardian.user_id, GUARDIAN,
|
||||||
junior_queryset.auth.id, {})
|
junior_queryset.auth_id, {})
|
||||||
return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
if junior_queryset.guardian_code and ('-' in junior_queryset.guardian_code):
|
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.remove(guardian.guardian_code)
|
||||||
junior_queryset.guardian_code_status.pop(index)
|
junior_queryset.guardian_code_status.pop(index)
|
||||||
junior_queryset.save()
|
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)
|
return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
@ -107,7 +107,7 @@ class CreateJuniorSerializer(serializers.ModelSerializer):
|
|||||||
guardian_data = Guardian.objects.filter(guardian_code=guardian_code[0]).last()
|
guardian_data = Guardian.objects.filter(guardian_code=guardian_code[0]).last()
|
||||||
if guardian_data:
|
if guardian_data:
|
||||||
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior)
|
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_approval_mail.delay(user.email, user.first_name)
|
||||||
junior.dob = validated_data.get('dob', junior.dob)
|
junior.dob = validated_data.get('dob', junior.dob)
|
||||||
junior.passcode = validated_data.get('passcode', junior.passcode)
|
junior.passcode = validated_data.get('passcode', junior.passcode)
|
||||||
@ -323,7 +323,7 @@ class AddJuniorSerializer(serializers.ModelSerializer):
|
|||||||
"""Notification email"""
|
"""Notification email"""
|
||||||
junior_notification_email.delay(email, full_name, email, special_password)
|
junior_notification_email.delay(email, full_name, email, special_password)
|
||||||
# push notification
|
# 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
|
return junior_data
|
||||||
|
|
||||||
|
|
||||||
@ -359,8 +359,8 @@ class CompleteTaskSerializer(serializers.ModelSerializer):
|
|||||||
instance.task_status = str(NUMBER['four'])
|
instance.task_status = str(NUMBER['four'])
|
||||||
instance.is_approved = False
|
instance.is_approved = False
|
||||||
instance.save()
|
instance.save()
|
||||||
send_notification.delay(TASK_ACTION, instance.junior.auth.id, JUNIOR,
|
send_notification.delay(TASK_ACTION, instance.junior.auth_id, JUNIOR,
|
||||||
instance.guardian.user.id, {'task_id': instance.id})
|
instance.guardian.user_id, {'task_id': instance.id})
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
class JuniorPointsSerializer(serializers.ModelSerializer):
|
class JuniorPointsSerializer(serializers.ModelSerializer):
|
||||||
@ -467,7 +467,7 @@ class AddGuardianSerializer(serializers.ModelSerializer):
|
|||||||
"""Notification email"""
|
"""Notification email"""
|
||||||
junior_notification_email(email, full_name, email, password)
|
junior_notification_email(email, full_name, email, password)
|
||||||
junior_approval_mail.delay(email, full_name)
|
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
|
return guardian_data
|
||||||
|
|
||||||
class StartTaskSerializer(serializers.ModelSerializer):
|
class StartTaskSerializer(serializers.ModelSerializer):
|
||||||
|
@ -263,7 +263,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
if jun_data:
|
if jun_data:
|
||||||
jun_data.relationship = str(self.request.data['relationship'])
|
jun_data.relationship = str(self.request.data['relationship'])
|
||||||
jun_data.save()
|
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
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ class RemoveJuniorAPIView(views.APIView):
|
|||||||
# save serializer
|
# save serializer
|
||||||
serializer.save()
|
serializer.save()
|
||||||
JuniorGuardianRelationship.objects.filter(guardian=guardian, junior=junior_queryset).delete()
|
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_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)
|
return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
else:
|
else:
|
||||||
|
@ -115,8 +115,6 @@ class UserCSVReportSerializer(serializers.ModelSerializer):
|
|||||||
if profile := (obj.guardian_profile.all().first() or obj.junior_profile.all().first()):
|
if profile := (obj.guardian_profile.all().first() or obj.junior_profile.all().first()):
|
||||||
return f"+{profile.country_code}{profile.phone}" \
|
return f"+{profile.country_code}{profile.phone}" \
|
||||||
if profile.country_code and profile.phone else profile.phone
|
if profile.country_code and profile.phone else profile.phone
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_user_type(obj):
|
def get_user_type(obj):
|
||||||
|
@ -50,8 +50,6 @@ class UserManagementListSerializer(serializers.ModelSerializer):
|
|||||||
return profile.country_code if profile.country_code else None
|
return profile.country_code if profile.country_code else None
|
||||||
elif profile := obj.junior_profile.all().first():
|
elif profile := obj.junior_profile.all().first():
|
||||||
return profile.country_code if profile.country_code else None
|
return profile.country_code if profile.country_code else None
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_phone(obj):
|
def get_phone(obj):
|
||||||
@ -63,8 +61,6 @@ class UserManagementListSerializer(serializers.ModelSerializer):
|
|||||||
return profile.phone if profile.phone else None
|
return profile.phone if profile.phone else None
|
||||||
elif profile := obj.junior_profile.all().first():
|
elif profile := obj.junior_profile.all().first():
|
||||||
return profile.phone if profile.phone else None
|
return profile.phone if profile.phone else None
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_user_type(obj):
|
def get_user_type(obj):
|
||||||
@ -76,8 +72,6 @@ class UserManagementListSerializer(serializers.ModelSerializer):
|
|||||||
return dict(USER_TYPE).get('2')
|
return dict(USER_TYPE).get('2')
|
||||||
elif obj.junior_profile.all().first():
|
elif obj.junior_profile.all().first():
|
||||||
return dict(USER_TYPE).get('1')
|
return dict(USER_TYPE).get('1')
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_is_active(obj):
|
def get_is_active(obj):
|
||||||
@ -89,8 +83,6 @@ class UserManagementListSerializer(serializers.ModelSerializer):
|
|||||||
return profile.is_active
|
return profile.is_active
|
||||||
elif profile := obj.junior_profile.all().first():
|
elif profile := obj.junior_profile.all().first():
|
||||||
return profile.is_active
|
return profile.is_active
|
||||||
else:
|
|
||||||
return obj.is_active
|
|
||||||
|
|
||||||
|
|
||||||
class GuardianSerializer(serializers.ModelSerializer):
|
class GuardianSerializer(serializers.ModelSerializer):
|
||||||
@ -292,5 +284,3 @@ class UserManagementDetailSerializer(serializers.ModelSerializer):
|
|||||||
is_verified=True).select_related('user')
|
is_verified=True).select_related('user')
|
||||||
serializer = GuardianSerializer(guardian, many=True)
|
serializer = GuardianSerializer(guardian, many=True)
|
||||||
return serializer.data
|
return serializer.data
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
Reference in New Issue
Block a user