diff --git a/account/views.py b/account/views.py index e68732e..2785ae1 100644 --- a/account/views.py +++ b/account/views.py @@ -51,7 +51,8 @@ class GoogleLoginMixin(object): def google_login(request): """google login function""" 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: 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 str(user_type) == '1': 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) if str(user_type) == '2': 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) return custom_response(SUCCESS_CODE['3003'], serializer.data, 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) if str(user_type) == '1': 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) ) 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 custom_response(SUCCESS_CODE['3003'], serializer.data, response_status=status.HTTP_200_OK) @@ -137,7 +152,8 @@ class SigninWithApple(views.APIView): }""" def post(self, request): 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: decoded_data = jwt.decode(token, options={"verify_signature": False}) user_data = {"email": decoded_data.get('email'), "username": decoded_data.get('email'), "is_active": True} @@ -145,11 +161,21 @@ class SigninWithApple(views.APIView): try: user = User.objects.get(email=decoded_data.get("email")) if str(user_type) == '1': - junior_query = Junior.objects.filter(auth=user).last() - serializer = JuniorSerializer(junior_query) + junior_data = Junior.objects.filter(auth=user).last() + 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': - guardian_query = Guardian.objects.filter(user=user).last() - serializer = GuardianSerializer(guardian_query) + guardian_data = Guardian.objects.filter(user=user).last() + 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, response_status=status.HTTP_200_OK) @@ -169,6 +195,10 @@ class SigninWithApple(views.APIView): guardian_code=generate_code(GRD, user.id), referral_code=generate_code(ZOD, user.id)) 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, response_status=status.HTTP_200_OK) except Exception as e: diff --git a/web_admin/views/article.py b/web_admin/views/article.py index 6570f6f..f362f8b 100644 --- a/web_admin/views/article.py +++ b/web_admin/views/article.py @@ -229,7 +229,7 @@ class ArticleListViewSet(GenericViewSet, mixins.ListModelMixin): http_method_names = ['get',] 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' ).order_by('-created_at') queryset = self.filter_queryset(article)