google login with user type and is published article only display

This commit is contained in:
jain
2023-08-23 17:15:54 +05:30
parent 4e0c6a91f4
commit 20644a6293
2 changed files with 38 additions and 8 deletions

View File

@ -51,7 +51,8 @@ class GoogleLoginMixin(object):
def google_login(request): def google_login(request):
"""google login function""" """google login function"""
access_token = request.data.get('access_token') access_token = request.data.get('access_token')
user_type = request.data.get('user_type') user_type = request.META.get('HTTP_USER_TYPE')
device_id = request.META.get('HTTP_DEVICE_ID')
if not access_token: if not access_token:
return Response({'error': 'Access token is required.'}, status=status.HTTP_400_BAD_REQUEST) return Response({'error': 'Access token is required.'}, status=status.HTTP_400_BAD_REQUEST)
@ -84,14 +85,24 @@ class GoogleLoginMixin(object):
if user_data.exists(): if user_data.exists():
if str(user_type) == '1': if str(user_type) == '1':
junior_query = Junior.objects.filter(auth=user_data.last()).last() junior_query = Junior.objects.filter(auth=user_data.last()).last()
if not junior_query:
return custom_error_response(
ERROR_CODE["2071"],
response_status=status.HTTP_400_BAD_REQUEST
)
serializer = JuniorSerializer(junior_query) serializer = JuniorSerializer(junior_query)
if str(user_type) == '2': if str(user_type) == '2':
guardian_query = Guardian.objects.filter(user=user_data.last()).last() guardian_query = Guardian.objects.filter(user=user_data.last()).last()
if not guardian_query:
return custom_error_response(
ERROR_CODE["2070"],
response_status=status.HTTP_400_BAD_REQUEST
)
serializer = GuardianSerializer(guardian_query) serializer = GuardianSerializer(guardian_query)
return custom_response(SUCCESS_CODE['3003'], serializer.data, return custom_response(SUCCESS_CODE['3003'], serializer.data,
response_status=status.HTTP_200_OK) response_status=status.HTTP_200_OK)
if not User.objects.filter(email__iexact=email).exists(): else:
user_obj = User.objects.create(username=email, email=email, first_name=first_name, last_name=last_name) user_obj = User.objects.create(username=email, email=email, first_name=first_name, last_name=last_name)
if str(user_type) == '1': if str(user_type) == '1':
junior_query = Junior.objects.create(auth=user_obj, is_verified=True, is_active=True, junior_query = Junior.objects.create(auth=user_obj, is_verified=True, is_active=True,
@ -109,6 +120,10 @@ class GoogleLoginMixin(object):
referral_code=generate_code(ZOD, user_obj.id) referral_code=generate_code(ZOD, user_obj.id)
) )
serializer = GuardianSerializer(guardian_query) serializer = GuardianSerializer(guardian_query)
device_detail, created = UserDeviceDetails.objects.get_or_create(user=user_obj)
if device_detail:
device_detail.device_id = device_id
device_detail.save()
# Return a JSON response with the user's email and name # Return a JSON response with the user's email and name
return custom_response(SUCCESS_CODE['3003'], serializer.data, return custom_response(SUCCESS_CODE['3003'], serializer.data,
response_status=status.HTTP_200_OK) response_status=status.HTTP_200_OK)
@ -137,7 +152,8 @@ class SigninWithApple(views.APIView):
}""" }"""
def post(self, request): def post(self, request):
token = request.data.get("access_token") token = request.data.get("access_token")
user_type = request.data.get("user_type") user_type = request.META.get('HTTP_USER_TYPE')
device_id = request.META.get('HTTP_DEVICE_ID')
try: try:
decoded_data = jwt.decode(token, options={"verify_signature": False}) decoded_data = jwt.decode(token, options={"verify_signature": False})
user_data = {"email": decoded_data.get('email'), "username": decoded_data.get('email'), "is_active": True} user_data = {"email": decoded_data.get('email'), "username": decoded_data.get('email'), "is_active": True}
@ -145,11 +161,21 @@ class SigninWithApple(views.APIView):
try: try:
user = User.objects.get(email=decoded_data.get("email")) user = User.objects.get(email=decoded_data.get("email"))
if str(user_type) == '1': if str(user_type) == '1':
junior_query = Junior.objects.filter(auth=user).last() junior_data = Junior.objects.filter(auth=user).last()
serializer = JuniorSerializer(junior_query) if not junior_data:
return custom_error_response(
ERROR_CODE["2071"],
response_status=status.HTTP_400_BAD_REQUEST
)
serializer = JuniorSerializer(junior_data)
if str(user_type) == '2': if str(user_type) == '2':
guardian_query = Guardian.objects.filter(user=user).last() guardian_data = Guardian.objects.filter(user=user).last()
serializer = GuardianSerializer(guardian_query) if not guardian_data:
return custom_error_response(
ERROR_CODE["2070"],
response_status=status.HTTP_400_BAD_REQUEST
)
serializer = GuardianSerializer(guardian_data)
return custom_response(SUCCESS_CODE['3003'], serializer.data, return custom_response(SUCCESS_CODE['3003'], serializer.data,
response_status=status.HTTP_200_OK) response_status=status.HTTP_200_OK)
@ -169,6 +195,10 @@ class SigninWithApple(views.APIView):
guardian_code=generate_code(GRD, user.id), guardian_code=generate_code(GRD, user.id),
referral_code=generate_code(ZOD, user.id)) referral_code=generate_code(ZOD, user.id))
serializer = GuardianSerializer(guardian_query) serializer = GuardianSerializer(guardian_query)
device_detail, created = UserDeviceDetails.objects.get_or_create(user=user_obj)
if device_detail:
device_detail.device_id = device_id
device_detail.save()
return custom_response(SUCCESS_CODE['3003'], serializer.data, return custom_response(SUCCESS_CODE['3003'], serializer.data,
response_status=status.HTTP_200_OK) response_status=status.HTTP_200_OK)
except Exception as e: except Exception as e:

View File

@ -229,7 +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).prefetch_related( article = self.queryset.objects.filter(is_deleted=False, is_published=True).prefetch_related(
'article_cards', 'article_survey', 'article_survey__options' 'article_cards', 'article_survey', 'article_survey__options'
).order_by('-created_at') ).order_by('-created_at')
queryset = self.filter_queryset(article) queryset = self.filter_queryset(article)