jira-33 mark as complete the task

This commit is contained in:
jain
2023-07-18 15:59:26 +05:30
parent 4c0cac7cb0
commit 5cc43aa2b8
3 changed files with 48 additions and 5 deletions
+15 -1
View File
@@ -3,7 +3,7 @@
from rest_framework import serializers from rest_framework import serializers
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import transaction from django.db import transaction
import random from datetime import datetime
from django.utils import timezone from django.utils import timezone
from rest_framework_simplejwt.tokens import RefreshToken from rest_framework_simplejwt.tokens import RefreshToken
@@ -306,3 +306,17 @@ class RemoveJuniorSerializer(serializers.ModelSerializer):
instance.save() instance.save()
return instance return instance
class CompleteTaskSerializer(serializers.ModelSerializer):
"""User task Serializer"""
class Meta(object):
"""Meta class"""
model = JuniorTask
fields = ('id', 'image')
def update(self, instance, validated_data):
instance.image = validated_data.get('image', instance.image)
instance.requested_on = datetime.today()
instance.task_status = str(NUMBER['four'])
instance.is_approved = False
instance.save()
return instance
+4 -2
View File
@@ -2,7 +2,8 @@
"""Django import""" """Django import"""
from django.urls import path, include 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)
"""Third party import""" """Third party import"""
from rest_framework import routers from rest_framework import routers
@@ -36,5 +37,6 @@ router.register('junior-task-list', JuniorTaskListAPIView, basename='junior-task
# Define url pattern""" # Define url pattern"""
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())
] ]
+29 -2
View File
@@ -17,7 +17,7 @@ from rest_framework.pagination import PageNumberPagination
# Import account's task # Import account's task
from junior.models import Junior from junior.models import Junior
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,\ from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,\
RemoveJuniorSerializer) RemoveJuniorSerializer, CompleteTaskSerializer)
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
@@ -164,7 +164,7 @@ class FilterJuniorAPIView(viewsets.ModelViewSet):
class RemoveJuniorAPIView(views.APIView): class RemoveJuniorAPIView(views.APIView):
"""Eater Update API""" """Remove junior API"""
serializer_class = RemoveJuniorSerializer serializer_class = RemoveJuniorSerializer
model = Junior model = Junior
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
@@ -215,3 +215,30 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
# use TaskDetailsSerializer serializer # use TaskDetailsSerializer serializer
serializer = TaskDetailsSerializer(paginated_queryset, many=True) serializer = TaskDetailsSerializer(paginated_queryset, many=True)
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
class CompleteJuniorTaskAPIView(views.APIView):
"""Update junior task API"""
serializer_class = CompleteTaskSerializer
model = JuniorTask
permission_classes = [IsAuthenticated]
def put(self, request, format=None):
task_id = self.request.data.get('task_id')
image = request.data['image']
if image and image.size == NUMBER['zero']:
return custom_error_response(ERROR_CODE['2035'], response_status=status.HTTP_400_BAD_REQUEST)
filename = f"images/{image.name}"
image_url = upload_image_to_alibaba(image, filename)
# fetch junior query
task_queryset = JuniorTask.objects.filter(id=task_id, junior__auth__email=self.request.user).last()
if task_queryset:
# use RemoveJuniorSerializer serializer
serializer = CompleteTaskSerializer(task_queryset, data={'image': image_url}, partial=True)
if serializer.is_valid():
# save serializer
serializer.save()
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:
return custom_error_response(ERROR_CODE['2034'], response_status=status.HTTP_400_BAD_REQUEST)