start task api

This commit is contained in:
jain
2023-07-25 12:02:59 +05:30
parent 79e85fa968
commit e6d45f3bf2
4 changed files with 51 additions and 6 deletions

View File

@ -81,7 +81,8 @@ ERROR_CODE = {
"2047": "Invalid Junior ID ", "2047": "Invalid Junior ID ",
"2048": "Choose right file for image", "2048": "Choose right file for image",
"2049": "This task is already requested ", "2049": "This task is already requested ",
"2059": "Already exist junior" "2059": "Already exist junior",
"2060": "Task does not exist or not in pending state"
} }
"""Success message code""" """Success message code"""
SUCCESS_CODE = { SUCCESS_CODE = {
@ -129,7 +130,8 @@ SUCCESS_CODE = {
"3031": "Article Survey has been removed successfully.", "3031": "Article Survey has been removed successfully.",
"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"
} }
"""status code error""" """status code error"""
STATUS_CODE_ERROR = { STATUS_CODE_ERROR = {

View File

@ -428,3 +428,14 @@ class AddGuardianSerializer(serializers.ModelSerializer):
send_notification(INVITED_GUARDIAN, None, junior_data.auth.id, {}) send_notification(INVITED_GUARDIAN, None, junior_data.auth.id, {})
send_notification(APPROVED_JUNIOR, None, email, {}) send_notification(APPROVED_JUNIOR, None, email, {})
return instance return instance
class StartTaskSerializer(serializers.ModelSerializer):
"""User task Serializer"""
class Meta(object):
"""Meta class"""
model = JuniorTask
fields = ('id', 'task_status')
def update(self, instance, validated_data):
instance.task_status = str(NUMBER['two'])
instance.save()
return instance

View File

@ -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) InviteGuardianAPIView, StartTaskAPIView)
"""Third party import""" """Third party import"""
from rest_framework import routers from rest_framework import routers
@ -45,5 +45,6 @@ router.register('invite-guardian', InviteGuardianAPIView, basename='invite-guard
urlpatterns = [ 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())
] ]

View File

@ -23,7 +23,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) AddGuardianSerializer, StartTaskSerializer)
from guardian.models import Guardian, JuniorTask from guardian.models import Guardian, JuniorTask
from guardian.serializers import TaskDetailsSerializer from guardian.serializers import TaskDetailsSerializer
from base.messages import ERROR_CODE, SUCCESS_CODE from base.messages import ERROR_CODE, SUCCESS_CODE
@ -97,6 +97,7 @@ class JuniorListAPIView(viewsets.ModelViewSet):
serializer_class = JuniorDetailListSerializer serializer_class = JuniorDetailListSerializer
queryset = Junior.objects.all() queryset = Junior.objects.all()
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ('get',)
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
""" junior list""" """ junior list"""
@ -115,6 +116,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
queryset = Junior.objects.all() queryset = Junior.objects.all()
serializer_class = AddJuniorSerializer serializer_class = AddJuniorSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ('post',)
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
""" junior list""" """ junior list"""
info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'], info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'],
@ -137,6 +139,7 @@ class InvitedJuniorAPIView(viewsets.ModelViewSet):
queryset = Junior.objects.all() queryset = Junior.objects.all()
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
pagination_class = PageNumberPagination pagination_class = PageNumberPagination
http_method_names = ('get',)
def get_queryset(self): def get_queryset(self):
"""Get the queryset for the view""" """Get the queryset for the view"""
@ -161,6 +164,7 @@ class FilterJuniorAPIView(viewsets.ModelViewSet):
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
pagination_class = PageNumberPagination pagination_class = PageNumberPagination
queryset = Junior.objects.all() queryset = Junior.objects.all()
http_method_names = ('get',)
def get_queryset(self): def get_queryset(self):
"""Get the queryset for the view""" """Get the queryset for the view"""
@ -212,6 +216,7 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
pagination_class = PageNumberPagination pagination_class = PageNumberPagination
queryset = JuniorTask.objects.all() queryset = JuniorTask.objects.all()
http_method_names = ('get',)
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
"""Create guardian profile""" """Create guardian profile"""
@ -280,6 +285,7 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet):
"""Junior Points viewset""" """Junior Points viewset"""
serializer_class = JuniorPointsSerializer serializer_class = JuniorPointsSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ('get',)
def get_queryset(self): def get_queryset(self):
"""get queryset""" """get queryset"""
@ -295,6 +301,7 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet):
class ValidateReferralCode(viewsets.ViewSet): class ValidateReferralCode(viewsets.ViewSet):
"""Check guardian code exist or not""" """Check guardian code exist or not"""
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ('get',)
def get_queryset(self): def get_queryset(self):
"""Get queryset based on referral_code.""" """Get queryset based on referral_code."""
@ -321,7 +328,7 @@ class InviteGuardianAPIView(viewsets.ModelViewSet):
"""Invite guardian by junior""" """Invite guardian by junior"""
serializer_class = AddGuardianSerializer serializer_class = AddGuardianSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ('post',)
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
""" junior list""" """ junior list"""
info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'], info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'],
@ -333,3 +340,27 @@ class InviteGuardianAPIView(viewsets.ModelViewSet):
serializer.save() serializer.save()
return custom_response(SUCCESS_CODE['3034'], serializer.data, response_status=status.HTTP_200_OK) return custom_response(SUCCESS_CODE['3034'], serializer.data, response_status=status.HTTP_200_OK)
return custom_error_response(serializer.error, response_status=status.HTTP_400_BAD_REQUEST) return custom_error_response(serializer.error, response_status=status.HTTP_400_BAD_REQUEST)
class StartTaskAPIView(views.APIView):
"""Update junior task API"""
serializer_class = StartTaskSerializer
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, junior__auth__email=self.request.user).last()
if task_queryset and task_queryset.task_status == str(NUMBER['one']):
# use StartTaskSerializer serializer
serializer = StartTaskSerializer(task_queryset, data=request.data, partial=True)
if serializer.is_valid():
# save serializer
serializer.save()
return custom_response(SUCCESS_CODE['3035'], None, 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['2060'], response_status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)