Merge pull request #178 from KiwiTechLLC/sprint4

Sprint4
This commit is contained in:
Ankitajain-kiwi
2023-08-10 11:56:53 +05:30
committed by GitHub
8 changed files with 52 additions and 8 deletions

View File

@ -150,12 +150,16 @@ SUCCESS_CODE = {
"3038": "Status has been changed successfully.", "3038": "Status has been changed successfully.",
# notification read # notification read
"3039": "Notification read successfully", "3039": "Notification read successfully",
# start article
"3040": "Start article successfully", "3040": "Start article successfully",
# complete article # complete article
"3041": "Article completed successfully", "3041": "Article completed successfully",
# submit assessment successfully # submit assessment successfully
"3042": "Assessment completed successfully", "3042": "Assessment completed successfully",
"3043": "Read article card successfully" # read article
"3043": "Read article card successfully",
# remove guardian code request
"3044": "Remove guardian code request successfully",
} }
"""status code error""" """status code error"""

View File

@ -355,6 +355,7 @@ class ApproveJuniorSerializer(serializers.ModelSerializer):
instance = self.context['junior'] instance = self.context['junior']
instance.guardian_code = [self.context['guardian_code']] instance.guardian_code = [self.context['guardian_code']]
instance.guardian_code_approved = True instance.guardian_code_approved = True
instance.guardian_code_status = str(NUMBER['two'])
instance.save() instance.save()
return instance return instance

View File

@ -311,6 +311,7 @@ class ApproveJuniorAPIView(viewsets.ViewSet):
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:
queryset[1].guardian_code = None queryset[1].guardian_code = None
queryset[1].guardian_code_status = str(NUMBER['one'])
queryset[1].save() queryset[1].save()
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:

View File

@ -167,7 +167,8 @@ class JuniorArticle(models.Model):
Survey Options model Survey Options model
""" """
# associated junior with the task # associated junior with the task
junior = models.OneToOneField(Junior, on_delete=models.CASCADE, related_name='juniors_article', verbose_name='Junior') junior = models.OneToOneField(Junior, on_delete=models.CASCADE, related_name='juniors_article',
verbose_name='Junior')
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='junior_articles_details') article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='junior_articles_details')
# article completed""" # article completed"""
is_completed = models.BooleanField(default=False) is_completed = models.BooleanField(default=False)
@ -184,7 +185,8 @@ class JuniorArticleCard(models.Model):
Survey Options model Survey Options model
""" """
# associated junior with the task # associated junior with the task
junior = models.ForeignKey(Junior, on_delete=models.CASCADE, related_name='juniors_article_card', verbose_name='Junior') junior = models.ForeignKey(Junior, on_delete=models.CASCADE, related_name='juniors_article_card',
verbose_name='Junior')
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='junior_articles_detail') article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='junior_articles_detail')
article_card = models.ForeignKey(ArticleCard, on_delete=models.CASCADE, related_name='junior_article_card') article_card = models.ForeignKey(ArticleCard, on_delete=models.CASCADE, related_name='junior_article_card')

View File

@ -492,3 +492,15 @@ class ReAssignTaskSerializer(serializers.ModelSerializer):
instance.save() instance.save()
return instance return instance
class RemoveGuardianCodeSerializer(serializers.ModelSerializer):
"""User task Serializer"""
class Meta(object):
"""Meta class"""
model = Junior
fields = ('id', )
def update(self, instance, validated_data):
instance.guardian_code_status = str(NUMBER['one'])
instance.save()
return instance

View File

@ -6,7 +6,7 @@ from .views import (UpdateJuniorProfile, ValidateGuardianCode, JuniorListAPIView
CompleteJuniorTaskAPIView, JuniorPointsListAPIView, ValidateReferralCode, CompleteJuniorTaskAPIView, JuniorPointsListAPIView, ValidateReferralCode,
InviteGuardianAPIView, StartTaskAPIView, ReAssignJuniorTaskAPIView, StartArticleAPIView, InviteGuardianAPIView, StartTaskAPIView, ReAssignJuniorTaskAPIView, StartArticleAPIView,
StartAssessmentAPIView, CheckAnswerAPIView, CompleteArticleAPIView, ReadArticleCardAPIView, StartAssessmentAPIView, CheckAnswerAPIView, CompleteArticleAPIView, ReadArticleCardAPIView,
CreateArticleCardAPIView) CreateArticleCardAPIView, RemoveGuardianCodeAPIView)
"""Third party import""" """Third party import"""
from rest_framework import routers from rest_framework import routers
@ -60,4 +60,5 @@ urlpatterns = [
path('api/v1/reassign-task/', ReAssignJuniorTaskAPIView.as_view()), path('api/v1/reassign-task/', ReAssignJuniorTaskAPIView.as_view()),
path('api/v1/complete-article/', CompleteArticleAPIView.as_view()), path('api/v1/complete-article/', CompleteArticleAPIView.as_view()),
path('api/v1/read-article-card/', ReadArticleCardAPIView.as_view()), path('api/v1/read-article-card/', ReadArticleCardAPIView.as_view()),
path('api/v1/remove-guardian-code-request/', RemoveGuardianCodeAPIView.as_view()),
] ]

View File

@ -50,7 +50,7 @@ def junior_approval_mail(guardian, full_name):
def update_positions_based_on_points(): def update_positions_based_on_points():
"""Update position of the junior""" """Update position of the junior"""
# First, retrieve all the JuniorPoints instances ordered by total_points in descending order. # First, retrieve all the JuniorPoints instances ordered by total_points in descending order.
juniors_points = JuniorPoints.objects.order_by('-total_points', 'updated_at') juniors_points = JuniorPoints.objects.order_by('-total_points', 'created_at')
# Now, iterate through the queryset and update the position field based on the order. # Now, iterate through the queryset and update the position field based on the order.
position = 1 position = 1

View File

@ -33,8 +33,8 @@ from junior.models import (Junior, JuniorPoints, JuniorGuardianRelationship, Jun
JuniorArticleCard) JuniorArticleCard)
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer, from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,
RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer, RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer,
AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer,
) RemoveGuardianCodeSerializer)
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
@ -260,7 +260,8 @@ 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)).last() junior_queryset = Junior.objects.filter(id=junior_id,
guardian_code__icontains=str(guardian.guardian_code)).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)
@ -621,3 +622,25 @@ class CreateArticleCardAPIView(viewsets.ModelViewSet):
return custom_response(None, response_status=status.HTTP_200_OK) return custom_response(None, 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)
class RemoveGuardianCodeAPIView(views.APIView):
"""Update junior task API"""
serializer_class = RemoveGuardianCodeSerializer
permission_classes = [IsAuthenticated]
def put(self, request, format=None):
try:
junior_queryset = Junior.objects.filter(auth=self.request.user).last()
if junior_queryset:
# use RemoveGuardianCodeSerializer serializer
serializer = RemoveGuardianCodeSerializer(junior_queryset, data=request.data, partial=True)
if serializer.is_valid():
# save serializer
serializer.save()
return custom_response(SUCCESS_CODE['3044'], 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['2047'], response_status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)