mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-08-25 21:59:40 +00:00
@ -91,7 +91,8 @@ ERROR_CODE = {
|
|||||||
"2062": "Please enter email address",
|
"2062": "Please enter email address",
|
||||||
"2063": "Unauthorized access.",
|
"2063": "Unauthorized access.",
|
||||||
"2064": "To change your password first request an OTP and get it verify then change your password.",
|
"2064": "To change your password first request an OTP and get it verify then change your password.",
|
||||||
"2065": "Passwords do not match. Please try again."
|
"2065": "Passwords do not match. Please try again.",
|
||||||
|
"2066": "Task does not exist or not in expired state"
|
||||||
}
|
}
|
||||||
"""Success message code"""
|
"""Success message code"""
|
||||||
SUCCESS_CODE = {
|
SUCCESS_CODE = {
|
||||||
@ -140,7 +141,8 @@ SUCCESS_CODE = {
|
|||||||
"3032": "Task request sent successfully",
|
"3032": "Task request sent successfully",
|
||||||
"3033": "Valid Referral code",
|
"3033": "Valid Referral code",
|
||||||
"3034": "Invite guardian successfully",
|
"3034": "Invite guardian successfully",
|
||||||
"3035": "Task started successfully"
|
"3035": "Task started successfully",
|
||||||
|
"3036": "Task reassign successfully"
|
||||||
}
|
}
|
||||||
"""status code error"""
|
"""status code error"""
|
||||||
STATUS_CODE_ERROR = {
|
STATUS_CODE_ERROR = {
|
||||||
|
@ -345,7 +345,7 @@ class ApproveJuniorSerializer(serializers.ModelSerializer):
|
|||||||
"""update guardian code"""
|
"""update guardian code"""
|
||||||
instance = self.context['junior']
|
instance = self.context['junior']
|
||||||
instance.guardian_code = [self.context['guardian_code']]
|
instance.guardian_code = [self.context['guardian_code']]
|
||||||
instance.is_invited = True
|
instance.guardian_code_approved = True
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
# Generated by Django 4.2.2 on 2023-08-02 11:27
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('junior', '0017_juniorguardianrelationship'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='junior',
|
||||||
|
name='relationship',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='junior',
|
||||||
|
name='guardian_code_approved',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
@ -71,6 +71,8 @@ class Junior(models.Model):
|
|||||||
passcode = models.IntegerField(null=True, blank=True, default=None)
|
passcode = models.IntegerField(null=True, blank=True, default=None)
|
||||||
# junior is verified or not"""
|
# junior is verified or not"""
|
||||||
is_verified = models.BooleanField(default=False)
|
is_verified = models.BooleanField(default=False)
|
||||||
|
"""guardian code is approved or not"""
|
||||||
|
guardian_code_approved = models.BooleanField(default=False)
|
||||||
# Profile created and updated time"""
|
# Profile created and updated time"""
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
@ -246,7 +246,7 @@ class JuniorProfileSerializer(serializers.ModelSerializer):
|
|||||||
fields = ['id', 'email', 'first_name', 'last_name', 'country_name', 'country_code', 'phone', 'gender', 'dob',
|
fields = ['id', 'email', 'first_name', 'last_name', 'country_name', 'country_code', 'phone', 'gender', 'dob',
|
||||||
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
||||||
'updated_at', 'notification_count', 'total_count', 'complete_field_count', 'signup_method',
|
'updated_at', 'notification_count', 'total_count', 'complete_field_count', 'signup_method',
|
||||||
'is_invited', 'passcode']
|
'is_invited', 'passcode', 'guardian_code_approved']
|
||||||
|
|
||||||
class AddJuniorSerializer(serializers.ModelSerializer):
|
class AddJuniorSerializer(serializers.ModelSerializer):
|
||||||
"""Add junior serializer"""
|
"""Add junior serializer"""
|
||||||
@ -458,3 +458,17 @@ class StartTaskSerializer(serializers.ModelSerializer):
|
|||||||
instance.task_status = str(NUMBER['two'])
|
instance.task_status = str(NUMBER['two'])
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
class ReAssignTaskSerializer(serializers.ModelSerializer):
|
||||||
|
"""User task Serializer"""
|
||||||
|
class Meta(object):
|
||||||
|
"""Meta class"""
|
||||||
|
model = JuniorTask
|
||||||
|
fields = ('id', 'due_date')
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
instance.task_status = str(NUMBER['one'])
|
||||||
|
instance.due_date = validated_data.get('due_date')
|
||||||
|
instance.is_approved = False
|
||||||
|
instance.requested_on = None
|
||||||
|
instance.save()
|
||||||
|
return instance
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import path, include
|
|||||||
from .views import (UpdateJuniorProfile, ValidateGuardianCode, JuniorListAPIView, AddJuniorAPIView,
|
from .views import (UpdateJuniorProfile, ValidateGuardianCode, JuniorListAPIView, AddJuniorAPIView,
|
||||||
InvitedJuniorAPIView, FilterJuniorAPIView, RemoveJuniorAPIView, JuniorTaskListAPIView,
|
InvitedJuniorAPIView, FilterJuniorAPIView, RemoveJuniorAPIView, JuniorTaskListAPIView,
|
||||||
CompleteJuniorTaskAPIView, JuniorPointsListAPIView, ValidateReferralCode,
|
CompleteJuniorTaskAPIView, JuniorPointsListAPIView, ValidateReferralCode,
|
||||||
InviteGuardianAPIView, StartTaskAPIView)
|
InviteGuardianAPIView, StartTaskAPIView, ReAssignJuniorTaskAPIView)
|
||||||
"""Third party import"""
|
"""Third party import"""
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
@ -46,5 +46,6 @@ urlpatterns = [
|
|||||||
path('api/v1/', include(router.urls)),
|
path('api/v1/', include(router.urls)),
|
||||||
path('api/v1/remove-junior/', RemoveJuniorAPIView.as_view()),
|
path('api/v1/remove-junior/', RemoveJuniorAPIView.as_view()),
|
||||||
path('api/v1/complete-task/', CompleteJuniorTaskAPIView.as_view()),
|
path('api/v1/complete-task/', CompleteJuniorTaskAPIView.as_view()),
|
||||||
path('api/v1/start-task/', StartTaskAPIView.as_view())
|
path('api/v1/start-task/', StartTaskAPIView.as_view()),
|
||||||
|
path('api/v1/reassign-task/', ReAssignJuniorTaskAPIView.as_view()),
|
||||||
]
|
]
|
||||||
|
@ -30,7 +30,7 @@ import requests
|
|||||||
from junior.models import Junior, JuniorPoints
|
from junior.models import Junior, JuniorPoints
|
||||||
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,\
|
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,\
|
||||||
RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer,
|
RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer,
|
||||||
AddGuardianSerializer, StartTaskSerializer)
|
AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer)
|
||||||
from guardian.models import Guardian, JuniorTask
|
from guardian.models import Guardian, JuniorTask
|
||||||
from guardian.serializers import TaskDetailsSerializer, TaskDetailsjuniorSerializer
|
from guardian.serializers import TaskDetailsSerializer, TaskDetailsjuniorSerializer
|
||||||
from base.messages import ERROR_CODE, SUCCESS_CODE
|
from base.messages import ERROR_CODE, SUCCESS_CODE
|
||||||
@ -246,8 +246,7 @@ class RemoveJuniorAPIView(views.APIView):
|
|||||||
junior_id = self.request.GET.get('id')
|
junior_id = self.request.GET.get('id')
|
||||||
guardian = Guardian.objects.filter(user__email=self.request.user).last()
|
guardian = Guardian.objects.filter(user__email=self.request.user).last()
|
||||||
# fetch junior query
|
# fetch junior query
|
||||||
junior_queryset = Junior.objects.filter(id=junior_id, guardian_code__icontains=str(guardian.guardian_code),
|
junior_queryset = Junior.objects.filter(id=junior_id, guardian_code__icontains=str(guardian.guardian_code)).last()
|
||||||
is_invited=True).last()
|
|
||||||
if junior_queryset:
|
if junior_queryset:
|
||||||
# use RemoveJuniorSerializer serializer
|
# use RemoveJuniorSerializer serializer
|
||||||
serializer = RemoveJuniorSerializer(junior_queryset, data=request.data, partial=True)
|
serializer = RemoveJuniorSerializer(junior_queryset, data=request.data, partial=True)
|
||||||
@ -434,3 +433,27 @@ class StartTaskAPIView(views.APIView):
|
|||||||
return custom_error_response(ERROR_CODE['2060'], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE['2060'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
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)
|
||||||
|
|
||||||
|
class ReAssignJuniorTaskAPIView(views.APIView):
|
||||||
|
"""Update junior task API"""
|
||||||
|
serializer_class = ReAssignTaskSerializer
|
||||||
|
model = JuniorTask
|
||||||
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
|
def put(self, request, format=None):
|
||||||
|
try:
|
||||||
|
task_id = self.request.data.get('task_id')
|
||||||
|
task_queryset = JuniorTask.objects.filter(id=task_id, guardian__user__email=self.request.user).last()
|
||||||
|
if task_queryset and task_queryset.task_status == str(NUMBER['six']):
|
||||||
|
# use StartTaskSerializer serializer
|
||||||
|
serializer = ReAssignTaskSerializer(task_queryset, data=request.data, partial=True)
|
||||||
|
if serializer.is_valid():
|
||||||
|
# save serializer
|
||||||
|
serializer.save()
|
||||||
|
return custom_response(SUCCESS_CODE['3036'], 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['2066'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
except Exception as e:
|
||||||
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
Reference in New Issue
Block a user