mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-08-25 21:59:40 +00:00
@ -45,7 +45,11 @@ class CustomMiddleware(object):
|
|||||||
api_endpoint = request.path
|
api_endpoint = request.path
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
# device details
|
# device details
|
||||||
device_details = UserDeviceDetails.objects.filter(user=request.user, device_id=device_id).last()
|
if device_id:
|
||||||
|
device_details = UserDeviceDetails.objects.filter(user=request.user, device_id=device_id).last()
|
||||||
|
if not device_details and api_endpoint != '/api/v1/user/login/':
|
||||||
|
custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND)
|
||||||
|
response = custom_response(custom_error)
|
||||||
if user_type and str(user_type) == str(NUMBER['one']):
|
if user_type and str(user_type) == str(NUMBER['one']):
|
||||||
junior = Junior.objects.filter(auth=request.user, is_active=False).last()
|
junior = Junior.objects.filter(auth=request.user, is_active=False).last()
|
||||||
if junior:
|
if junior:
|
||||||
@ -56,13 +60,11 @@ class CustomMiddleware(object):
|
|||||||
if guardian:
|
if guardian:
|
||||||
custom_error = custom_error_response(ERROR_CODE['2075'], response_status=status.HTTP_404_NOT_FOUND)
|
custom_error = custom_error_response(ERROR_CODE['2075'], response_status=status.HTTP_404_NOT_FOUND)
|
||||||
response = custom_response(custom_error)
|
response = custom_response(custom_error)
|
||||||
if device_id and not device_details and api_endpoint != '/api/v1/user/login/':
|
|
||||||
custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND)
|
if version and device_type:
|
||||||
response = custom_response(custom_error)
|
force_update = ForceUpdate.objects.filter(version=version, device_type=device_type).last()
|
||||||
force_update = ForceUpdate.objects.filter(version=version, device_type=device_type).last()
|
if not force_update:
|
||||||
api_endpoint_checks = not any(endpoint in api_endpoint for endpoint in ['/admin/', '/api/v1/admin/'])
|
custom_error = custom_error_response(ERROR_CODE['2079'],
|
||||||
if not force_update and version and device_type:
|
response_status=status.HTTP_308_PERMANENT_REDIRECT)
|
||||||
custom_error = custom_error_response(ERROR_CODE['2079'],
|
response = custom_response(custom_error, status.HTTP_308_PERMANENT_REDIRECT)
|
||||||
response_status=status.HTTP_308_PERMANENT_REDIRECT)
|
|
||||||
response = custom_response(custom_error, status.HTTP_308_PERMANENT_REDIRECT)
|
|
||||||
return response
|
return response
|
||||||
|
@ -43,7 +43,8 @@ FILE_SIZE = 5 * 1024 * 1024
|
|||||||
|
|
||||||
# String constant for configurable date for allocation lock period
|
# String constant for configurable date for allocation lock period
|
||||||
ALLOCATION_LOCK_DATE = 1
|
ALLOCATION_LOCK_DATE = 1
|
||||||
|
# guardian code status tuple
|
||||||
|
guardian_code_tuple = ('1','3')
|
||||||
"""user type"""
|
"""user type"""
|
||||||
USER_TYPE = (
|
USER_TYPE = (
|
||||||
('1', 'junior'),
|
('1', 'junior'),
|
||||||
|
@ -10,7 +10,7 @@ from rest_framework.permissions import IsAuthenticated
|
|||||||
from rest_framework import viewsets, status
|
from rest_framework import viewsets, status
|
||||||
from rest_framework.pagination import PageNumberPagination
|
from rest_framework.pagination import PageNumberPagination
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from base.constants import guardian_code_tuple
|
||||||
from rest_framework.filters import SearchFilter
|
from rest_framework.filters import SearchFilter
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
@ -178,7 +178,8 @@ class CreateTaskAPIView(viewsets.ModelViewSet):
|
|||||||
junior = request.data['junior']
|
junior = request.data['junior']
|
||||||
junior_id = Junior.objects.filter(id=junior).last()
|
junior_id = Junior.objects.filter(id=junior).last()
|
||||||
guardian_data = Guardian.objects.filter(user=request.user).last()
|
guardian_data = Guardian.objects.filter(user=request.user).last()
|
||||||
if guardian_data.guardian_code not in junior_id.guardian_code:
|
if (guardian_data.guardian_code not in junior_id.guardian_code or
|
||||||
|
junior_id.guardian_code_status in guardian_code_tuple):
|
||||||
return custom_error_response(ERROR_CODE['2078'], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE['2078'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
allowed_extensions = ['.jpg', '.jpeg', '.png']
|
allowed_extensions = ['.jpg', '.jpeg', '.png']
|
||||||
if not any(extension in str(image) for extension in allowed_extensions):
|
if not any(extension in str(image) for extension in allowed_extensions):
|
||||||
|
@ -191,6 +191,8 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(ERROR_CODE['2077'], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE['2077'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
elif not data:
|
elif not data:
|
||||||
return custom_error_response(ERROR_CODE['2076'], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE['2076'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
if data == "Max":
|
||||||
|
return custom_error_response(ERROR_CODE['2081'], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
return custom_response(SUCCESS_CODE['3021'], response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3021'], response_status=status.HTTP_200_OK)
|
||||||
# use AddJuniorSerializer serializer
|
# use AddJuniorSerializer serializer
|
||||||
serializer = AddJuniorSerializer(data=request.data, context=info_data)
|
serializer = AddJuniorSerializer(data=request.data, context=info_data)
|
||||||
@ -209,10 +211,12 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
return none
|
return none
|
||||||
if junior.guardian_code and (guardian.guardian_code in junior.guardian_code):
|
if junior.guardian_code and (guardian.guardian_code in junior.guardian_code):
|
||||||
return False
|
return False
|
||||||
if type(junior.guardian_code) is list:
|
if not junior.guardian_code:
|
||||||
|
junior.guardian_code = [guardian.guardian_code]
|
||||||
|
if type(junior.guardian_code) is list and len(junior.guardian_code) < 4:
|
||||||
junior.guardian_code.append(guardian.guardian_code)
|
junior.guardian_code.append(guardian.guardian_code)
|
||||||
else:
|
else:
|
||||||
junior.guardian_code = [guardian.guardian_code]
|
return "Max"
|
||||||
junior.guardian_code_status = str(NUMBER['two'])
|
junior.guardian_code_status = str(NUMBER['two'])
|
||||||
junior.save()
|
junior.save()
|
||||||
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior,
|
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian, junior=junior,
|
||||||
@ -616,7 +620,7 @@ class CheckAnswerAPIView(viewsets.ModelViewSet):
|
|||||||
answer_id = self.request.GET.get('answer_id')
|
answer_id = self.request.GET.get('answer_id')
|
||||||
current_page = self.request.GET.get('current_page')
|
current_page = self.request.GET.get('current_page')
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
submit_ans = SurveyOption.objects.filter(id=answer_id, is_answer=True).last()
|
submit_ans = SurveyOption.objects.filter(id=answer_id).last()
|
||||||
junior_article_points = JuniorArticlePoints.objects.filter(junior__auth=self.request.user,
|
junior_article_points = JuniorArticlePoints.objects.filter(junior__auth=self.request.user,
|
||||||
question=queryset)
|
question=queryset)
|
||||||
if submit_ans:
|
if submit_ans:
|
||||||
|
@ -219,8 +219,7 @@ class ArticleListSerializer(serializers.ModelSerializer):
|
|||||||
"""
|
"""
|
||||||
serializer for article API
|
serializer for article API
|
||||||
"""
|
"""
|
||||||
article_cards = ArticleCardSerializer(many=True)
|
image = serializers.SerializerMethodField('get_image')
|
||||||
article_survey = ArticleSurveySerializer(many=True)
|
|
||||||
total_points = serializers.SerializerMethodField('get_total_points')
|
total_points = serializers.SerializerMethodField('get_total_points')
|
||||||
is_completed = serializers.SerializerMethodField('get_is_completed')
|
is_completed = serializers.SerializerMethodField('get_is_completed')
|
||||||
|
|
||||||
@ -229,12 +228,16 @@ class ArticleListSerializer(serializers.ModelSerializer):
|
|||||||
meta class
|
meta class
|
||||||
"""
|
"""
|
||||||
model = Article
|
model = Article
|
||||||
fields = ('id', 'title', 'description', 'article_cards', 'article_survey', 'total_points', 'is_completed')
|
fields = ('id', 'title', 'description','image', 'total_points', 'is_completed')
|
||||||
|
|
||||||
|
def get_image(self, obj):
|
||||||
|
"""article image"""
|
||||||
|
if obj.article_cards.first():
|
||||||
|
return obj.article_cards.first().image_url
|
||||||
|
return None
|
||||||
def get_total_points(self, obj):
|
def get_total_points(self, obj):
|
||||||
"""total points of article"""
|
"""total points of article"""
|
||||||
total_question = ArticleSurvey.objects.filter(article=obj).count()
|
return obj.article_survey.all().count() * NUMBER['five']
|
||||||
return total_question * NUMBER['five']
|
|
||||||
|
|
||||||
def get_is_completed(self, obj):
|
def get_is_completed(self, obj):
|
||||||
"""complete all question"""
|
"""complete all question"""
|
||||||
@ -268,14 +271,14 @@ class ArticleQuestionSerializer(serializers.ModelSerializer):
|
|||||||
ans_obj = SurveyOption.objects.filter(survey=obj, is_answer=True).last()
|
ans_obj = SurveyOption.objects.filter(survey=obj, is_answer=True).last()
|
||||||
if ans_obj:
|
if ans_obj:
|
||||||
return ans_obj.id
|
return ans_obj.id
|
||||||
return str("None")
|
return None
|
||||||
|
|
||||||
def get_attempted_answer(self, obj):
|
def get_attempted_answer(self, obj):
|
||||||
"""attempt question or not"""
|
"""attempt question or not"""
|
||||||
context_data = self.context.get('user')
|
context_data = self.context.get('user')
|
||||||
junior_article_obj = JuniorArticlePoints.objects.filter(junior__auth=context_data,
|
junior_article_obj = JuniorArticlePoints.objects.filter(junior__auth=context_data,
|
||||||
question=obj, is_answer_correct=True).last()
|
question=obj).last()
|
||||||
if junior_article_obj:
|
if junior_article_obj and junior_article_obj.submitted_answer:
|
||||||
return junior_article_obj.submitted_answer.id
|
return junior_article_obj.submitted_answer.id
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -229,10 +229,7 @@ class ArticleListViewSet(GenericViewSet, mixins.ListModelMixin):
|
|||||||
http_method_names = ['get',]
|
http_method_names = ['get',]
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
article = self.queryset.objects.filter(is_deleted=False, is_published=True).prefetch_related(
|
queryset = self.queryset.objects.filter(is_deleted=False, is_published=True).order_by('-created_at')
|
||||||
'article_cards', 'article_survey', 'article_survey__options'
|
|
||||||
).order_by('-created_at')
|
|
||||||
queryset = self.filter_queryset(article)
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
|
Reference in New Issue
Block a user