Merge pull request #131 from KiwiTechLLC/qa

Qa
This commit is contained in:
Abu Talib
2023-07-28 20:19:40 +05:30
committed by GitHub
5 changed files with 34 additions and 11 deletions

View File

@ -308,6 +308,7 @@ class GuardianProfileSerializer(serializers.ModelSerializer):
'is_active', 'is_complete_profile', 'created_at', 'image', 'signup_method',
'updated_at', 'passcode']
class ApproveJuniorSerializer(serializers.ModelSerializer):
"""approve junior serializer"""
class Meta(object):
@ -319,9 +320,11 @@ class ApproveJuniorSerializer(serializers.ModelSerializer):
"""update guardian code"""
instance = self.context['junior']
instance.guardian_code = [self.context['guardian_code']]
instance.is_invited = True
instance.save()
return instance
class ApproveTaskSerializer(serializers.ModelSerializer):
"""approve task serializer"""
class Meta(object):

View File

@ -281,10 +281,13 @@ class ApproveJuniorAPIView(viewsets.ViewSet):
serializer.save()
return custom_response(SUCCESS_CODE['3023'], serializer.data, response_status=status.HTTP_200_OK)
else:
queryset[1].guardian_code = None
queryset[1].save()
return custom_response(SUCCESS_CODE['3024'], response_status=status.HTTP_200_OK)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
class ApproveTaskAPIView(viewsets.ViewSet):
"""approve junior by guardian"""
serializer_class = ApproveTaskSerializer

View File

@ -5,6 +5,8 @@ from rest_framework import viewsets, status, generics,views
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
import datetime
import requests
"""Django app import"""
@ -115,8 +117,14 @@ class JuniorListAPIView(viewsets.ModelViewSet):
serializer_class = JuniorDetailListSerializer
queryset = Junior.objects.all()
permission_classes = [IsAuthenticated]
filter_backends = (SearchFilter,)
search_fields = ['auth__first_name', 'auth__last_name']
http_method_names = ('get',)
def get_queryset(self):
queryset = self.filter_queryset(self.queryset)
return queryset
def list(self, request, *args, **kwargs):
""" junior list"""
try:
@ -124,7 +132,8 @@ class JuniorListAPIView(viewsets.ModelViewSet):
guardian_data = Guardian.objects.filter(user__email=request.user).last()
# fetch junior object
if guardian_data:
queryset = Junior.objects.filter(guardian_code__icontains=str(guardian_data.guardian_code))
queryset = self.get_queryset()
queryset = queryset.filter(guardian_code__icontains=str(guardian_data.guardian_code))
# use JuniorDetailListSerializer serializer
serializer = JuniorDetailListSerializer(queryset, many=True)
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
@ -132,20 +141,22 @@ class JuniorListAPIView(viewsets.ModelViewSet):
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
class AddJuniorAPIView(viewsets.ModelViewSet):
"""Add Junior by guardian"""
queryset = Junior.objects.all()
serializer_class = AddJuniorSerializer
permission_classes = [IsAuthenticated]
http_method_names = ('post',)
def create(self, request, *args, **kwargs):
""" junior list"""
try:
info_data = {'user': request.user, 'relationship': str(request.data['relationship']), 'email': request.data['email'], 'first_name': request.data['first_name'],
'last_name': request.data['last_name']}
if User.objects.filter(username=request.data['email']):
return custom_error_response(ERROR_CODE['2059'], response_status=status.HTTP_400_BAD_REQUEST)
if user := User.objects.filter(username=request.data['email']).first():
self.associate_guardian(user)
return custom_response(SUCCESS_CODE['3021'], response_status=status.HTTP_200_OK)
# use AddJuniorSerializer serializer
serializer = AddJuniorSerializer(data=request.data, context=info_data)
if serializer.is_valid():
@ -156,6 +167,14 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
def associate_guardian(self, user):
junior = Junior.objects.filter(auth=user).first()
guardian = Guardian.objects.filter(user=self.request.user).first()
junior.guardian_code = [guardian.guardian_code]
junior.save()
return True
class InvitedJuniorAPIView(viewsets.ModelViewSet):
"""Junior list of assosicated guardian"""

View File

@ -60,14 +60,14 @@ class ArticleSurveySerializer(serializers.ModelSerializer):
article survey serializer
"""
id = serializers.IntegerField(required=False)
survey_options = SurveyOptionSerializer(many=True)
options = SurveyOptionSerializer(many=True)
class Meta:
"""
meta class
"""
model = ArticleSurvey
fields = ('id', 'question', 'survey_options')
fields = ('id', 'question', 'options')
class ArticleSerializer(serializers.ModelSerializer):
@ -120,7 +120,7 @@ class ArticleSerializer(serializers.ModelSerializer):
for survey in article_survey:
survey = pop_id(survey)
options = survey.pop('survey_options')
options = survey.pop('options')
survey_obj = ArticleSurvey.objects.create(article=article, points=ARTICLE_SURVEY_POINTS, **survey)
for option in options:
option = pop_id(option)
@ -165,7 +165,7 @@ class ArticleSerializer(serializers.ModelSerializer):
# Update or create survey sections
for survey_data in article_survey:
survey_id = survey_data.get('id', None)
options_data = survey_data.pop('survey_options')
options_data = survey_data.pop('options')
if survey_id:
survey = ArticleSurvey.objects.get(id=survey_id, article=instance)
survey.question = survey_data.get('question', survey.question)

View File

@ -125,12 +125,10 @@ class AdminCreatePasswordSerializer(serializers.ModelSerializer):
if new_password != confirm_password:
raise serializers.ValidationError({'details': ERROR_CODE['2065']})
user_otp_details = UserEmailOtp.objects.filter(email=email).last()
user_otp_details = UserEmailOtp.objects.filter(email=email, is_verified=True).last()
if not user_otp_details:
raise serializers.ValidationError({'details': ERROR_CODE['2064']})
if user_otp_details.user_type != dict(USER_TYPE).get('3'):
raise serializers.ValidationError({'details': ERROR_CODE['2063']})
if not user_otp_details.is_verified:
raise serializers.ValidationError({'details': ERROR_CODE['2064']})
user_otp_details.delete()
return attrs