From 86e2c75afcf4a3cdc38190a1c7e84ea4eab27317 Mon Sep 17 00:00:00 2001 From: jain Date: Wed, 19 Jul 2023 15:01:18 +0530 Subject: [PATCH] jira-34 allocated points --- account/views.py | 4 ++-- guardian/serializers.py | 7 +++---- junior/serializers.py | 11 ++++++++--- junior/views.py | 40 +++++++++++++++++++++------------------- zod_bank/settings.py | 3 +-- 5 files changed, 35 insertions(+), 30 deletions(-) diff --git a/account/views.py b/account/views.py index 95b4694..10a538f 100644 --- a/account/views.py +++ b/account/views.py @@ -433,11 +433,11 @@ class ProfileAPIViewSet(viewsets.ModelViewSet): return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) class UploadImageAPIViewSet(viewsets.ModelViewSet): - """Profile viewset""" + """upload task image""" queryset = DefaultTaskImages.objects.all() serializer_class = DefaultTaskImagesSerializer def create(self, request, *args, **kwargs): - """profile view""" + """upload images""" image_data = request.data['image_url'] filename = f"default_task_images/{image_data.name}" if image_data.size == NUMBER['zero']: diff --git a/guardian/serializers.py b/guardian/serializers.py index 9343f8f..ff9edaf 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -324,8 +324,7 @@ class ApproveTaskSerializer(serializers.ModelSerializer): # update total task point junior_data.total_task_points = junior_data.total_task_points + instance.points # update complete time of task - instance.completed_on = datetime.today() - junior_data.save() + instance.completed_on = real_time() else: # reject the task instance.task_status = str(NUMBER['three']) @@ -333,8 +332,8 @@ class ApproveTaskSerializer(serializers.ModelSerializer): # update total task point junior_data.total_task_points = junior_data.total_task_points - instance.points # update reject time of task - instance.rejected_on = datetime.today() - junior_data.save() + instance.rejected_on = real_time() instance.save() + junior_data.save() return instance diff --git a/junior/serializers.py b/junior/serializers.py index cd99999..cd12a2e 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -16,6 +16,7 @@ from base.constants import PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, from guardian.models import Guardian, JuniorTask from account.models import UserEmailOtp from junior.utils import junior_notification_email, junior_approval_mail +from guardian.utils import real_time class ListCharField(serializers.ListField): @@ -315,7 +316,7 @@ class CompleteTaskSerializer(serializers.ModelSerializer): fields = ('id', 'image') def update(self, instance, validated_data): instance.image = validated_data.get('image', instance.image) - instance.requested_on = datetime.today() + instance.requested_on = real_time() instance.task_status = str(NUMBER['four']) instance.is_approved = False instance.save() @@ -323,7 +324,7 @@ class CompleteTaskSerializer(serializers.ModelSerializer): class JuniorPointsSerializer(serializers.ModelSerializer): """Junior points serializer""" - + junior_id = serializers.SerializerMethodField('get_junior_id') total_points = serializers.SerializerMethodField('get_points') in_progress_task = serializers.SerializerMethodField('get_in_progress_task') completed_task = serializers.SerializerMethodField('get_completed_task') @@ -332,6 +333,10 @@ class JuniorPointsSerializer(serializers.ModelSerializer): pending_task = serializers.SerializerMethodField('get_pending_task') position = serializers.SerializerMethodField('get_position') + def get_junior_id(self, obj): + """junior id""" + return obj.junior.id + def get_position(self, obj): data = JuniorPoints.objects.filter(junior=obj.junior).last() if data: @@ -364,5 +369,5 @@ class JuniorPointsSerializer(serializers.ModelSerializer): class Meta(object): """Meta info""" model = Junior - fields = ['id', 'total_points', 'position', 'pending_task', 'in_progress_task', 'completed_task', + fields = ['junior_id', 'total_points', 'position', 'pending_task', 'in_progress_task', 'completed_task', 'requested_task', 'rejected_task'] diff --git a/junior/views.py b/junior/views.py index 8160107..e1064af 100644 --- a/junior/views.py +++ b/junior/views.py @@ -232,25 +232,27 @@ class CompleteJuniorTaskAPIView(views.APIView): 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['3032'], 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['2044'], response_status=status.HTTP_400_BAD_REQUEST) - + try: + 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['3032'], 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['2044'], response_status=status.HTTP_400_BAD_REQUEST) + except Exception as e: + return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) class JuniorPointsListAPIView(viewsets.ModelViewSet): """Junior Points viewset""" diff --git a/zod_bank/settings.py b/zod_bank/settings.py index 5917e92..1de920f 100644 --- a/zod_bank/settings.py +++ b/zod_bank/settings.py @@ -113,8 +113,7 @@ REST_FRAMEWORK = { } # define jwt token SIMPLE_JWT = { - # 'ACCESS_TOKEN_LIFETIME': timedelta(hours=2, minutes=59, seconds=59, microseconds=999999), - 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5), + 'ACCESS_TOKEN_LIFETIME': timedelta(hours=2, minutes=59, seconds=59, microseconds=999999), 'REFRESH_TOKEN_LIFETIME': timedelta(hours=71, minutes=59, seconds=59, microseconds=999999), } # Database