mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-26 16:44:54 +00:00
article card api, check answer api
This commit is contained in:
@ -6,6 +6,7 @@ from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
from django.contrib.auth.models import User
|
||||
from rest_framework.filters import SearchFilter
|
||||
from django.db.models import F
|
||||
|
||||
import datetime
|
||||
import requests
|
||||
@ -41,6 +42,8 @@ from .utils import update_positions_based_on_points
|
||||
from notifications.utils import send_notification
|
||||
from notifications.constants import REMOVE_JUNIOR
|
||||
from web_admin.models import Article, ArticleSurvey, SurveyOption
|
||||
from web_admin.serializers.article_serializer import (ArticleSerializer, ArticleListSerializer,
|
||||
StartAssessmentSerializer)
|
||||
""" Define APIs """
|
||||
# Define validate guardian code API,
|
||||
# update junior profile,
|
||||
@ -351,6 +354,7 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet):
|
||||
|
||||
def get_queryset(self):
|
||||
"""get queryset"""
|
||||
update_positions_based_on_points()
|
||||
return JuniorTask.objects.filter(junior__auth__email=self.request.user).last()
|
||||
def list(self, request, *args, **kwargs):
|
||||
"""profile view"""
|
||||
@ -358,7 +362,6 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet):
|
||||
try:
|
||||
queryset = self.get_queryset()
|
||||
# update position of junior
|
||||
update_positions_based_on_points()
|
||||
serializer = JuniorPointsSerializer(queryset)
|
||||
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
@ -488,3 +491,57 @@ class StartArticleAPIView(viewsets.ModelViewSet):
|
||||
return custom_response(SUCCESS_CODE['3040'], response_status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class StartAssessmentAPIView(viewsets.ModelViewSet):
|
||||
"""Junior Points viewset"""
|
||||
serializer_class = StartAssessmentSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
http_method_names = ('get',)
|
||||
|
||||
def get_queryset(self):
|
||||
article_id = self.request.GET.get('article_id')
|
||||
# if referral_code:
|
||||
article = Article.objects.filter(id=article_id, is_deleted=False).prefetch_related(
|
||||
'article_cards', 'article_survey', 'article_survey__options'
|
||||
).order_by('-created_at')
|
||||
return article
|
||||
def list(self, request, *args, **kwargs):
|
||||
"""profile view"""
|
||||
|
||||
try:
|
||||
queryset = self.get_queryset()
|
||||
paginator = self.pagination_class()
|
||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||
serializer = self.serializer_class(paginated_queryset, context={"user":request.user}, many=True)
|
||||
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class CheckAnswerAPIView(viewsets.ModelViewSet):
|
||||
"""Junior Points viewset"""
|
||||
permission_classes = [IsAuthenticated]
|
||||
http_method_names = ('get',)
|
||||
|
||||
def get_queryset(self):
|
||||
question_id = self.request.GET.get('question_id')
|
||||
article = ArticleSurvey.objects.filter(id=question_id).last()
|
||||
return article
|
||||
def list(self, request, *args, **kwargs):
|
||||
"""profile view"""
|
||||
|
||||
try:
|
||||
answer_id = self.request.GET.get('answer_id')
|
||||
queryset = self.get_queryset()
|
||||
submit_ans = SurveyOption.objects.filter(id=answer_id, is_answer=True).last()
|
||||
junior_article_points = JuniorArticlePoints.objects.filter(junior__auth=self.request.user,
|
||||
question=queryset)
|
||||
if submit_ans:
|
||||
junior_article_points.update(submitted_answer=submit_ans, is_attempt=True, is_answer_correct=True)
|
||||
JuniorPoints.objects.filter(junior__auth=self.request.user).update(total_points=
|
||||
F('total_points')+ queryset.points)
|
||||
else:
|
||||
junior_article_points.update(submitted_answer=submit_ans, is_attempt=True, earn_points=0,
|
||||
is_answer_correct=False)
|
||||
return custom_response(None, response_status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
Reference in New Issue
Block a user