From 246623df55906d28cd1f2163497e96b2b7e78121 Mon Sep 17 00:00:00 2001 From: princekumarofficial Date: Fri, 28 Mar 2025 04:42:05 +0530 Subject: [PATCH 1/5] Add student_id and photo fields to StudentSerializer --- api/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/serializers.py b/api/serializers.py index 5f56331..b244674 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -14,7 +14,7 @@ class StudentSerializer(serializers.ModelSerializer): """Serializer for Student model.""" class Meta: model = Student - fields = ['id', 'email', 'name'] + fields = ['id', 'email', 'name', 'student_id', 'photo'] class CatererSerializer(serializers.ModelSerializer): From dd3e33d52dcbcbcadee0e92faaf4db2e2091e6fb Mon Sep 17 00:00:00 2001 From: princekumarofficial Date: Fri, 28 Mar 2025 04:46:00 +0530 Subject: [PATCH 2/5] Remove student_id field from StudentSerializer --- api/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/serializers.py b/api/serializers.py index b244674..d0be405 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -14,7 +14,7 @@ class StudentSerializer(serializers.ModelSerializer): """Serializer for Student model.""" class Meta: model = Student - fields = ['id', 'email', 'name', 'student_id', 'photo'] + fields = ['id', 'email', 'name', 'photo'] class CatererSerializer(serializers.ModelSerializer): From 0d8ea7c013be9af626f530e172ef52633702a5ab Mon Sep 17 00:00:00 2001 From: princekumarofficial Date: Fri, 28 Mar 2025 05:02:37 +0530 Subject: [PATCH 3/5] Fetch student photo from Google account if not present in QRVerifyUpdateView --- api/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/views.py b/api/views.py index d7abe84..87ece6d 100644 --- a/api/views.py +++ b/api/views.py @@ -14,6 +14,7 @@ QRVerifySerializer, MealSerializer, UserSerializer, QRVerifyPostSerializer ) from .utils.rebate_checker import is_student_on_rebate +from allauth.socialaccount.models import SocialAccount class LogoutView(APIView): """ @@ -172,6 +173,11 @@ def post(self, request): try: card = MessCard.objects.get(id=card_id) card_return_data = QRVerifySerializer(card).data + if not card_return_data.get('student').get('photo'): + socialaccount_obj = SocialAccount.objects.filter( + provider="google", user_id=card_return_data['student']['id'] + ) + card_return_data['student']['photo'] = socialaccount_obj[0].extra_data.get('picture') date = timezone.localtime().date() time = timezone.localtime().time() meal, _ = Meal.objects.get_or_create(mess_card=card, date=date) From 4d840f1ef512a11cdabaaf34ed5d30bbe553f7e1 Mon Sep 17 00:00:00 2001 From: princekumarofficial Date: Fri, 28 Mar 2025 05:17:35 +0530 Subject: [PATCH 4/5] Fetch student photo from Google account using email in QRVerifyUpdateView --- api/views.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/api/views.py b/api/views.py index 87ece6d..9f77666 100644 --- a/api/views.py +++ b/api/views.py @@ -15,6 +15,7 @@ ) from .utils.rebate_checker import is_student_on_rebate from allauth.socialaccount.models import SocialAccount +from django.contrib.auth.models import User class LogoutView(APIView): """ @@ -173,11 +174,15 @@ def post(self, request): try: card = MessCard.objects.get(id=card_id) card_return_data = QRVerifySerializer(card).data - if not card_return_data.get('student').get('photo'): - socialaccount_obj = SocialAccount.objects.filter( - provider="google", user_id=card_return_data['student']['id'] - ) - card_return_data['student']['photo'] = socialaccount_obj[0].extra_data.get('picture') + try: + if not card_return_data.get('student').get('photo'): + user = User.objects.get(email=card.student.email) + socialaccount_obj = SocialAccount.objects.filter( + provider="google", user_id=user.id + ) + card_return_data['student']['photo'] = socialaccount_obj[0].extra_data.get('picture') + except: + pass date = timezone.localtime().date() time = timezone.localtime().time() meal, _ = Meal.objects.get_or_create(mess_card=card, date=date) From ffe28de19d71f54a5b22ff3b4b8ea77e4f68531e Mon Sep 17 00:00:00 2001 From: princekumarofficial Date: Sat, 29 Mar 2025 02:03:11 +0530 Subject: [PATCH 5/5] Return error response if student photo is not available in QRVerifyUpdateView --- api/views.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/api/views.py b/api/views.py index 9f77666..eced1a2 100644 --- a/api/views.py +++ b/api/views.py @@ -174,15 +174,8 @@ def post(self, request): try: card = MessCard.objects.get(id=card_id) card_return_data = QRVerifySerializer(card).data - try: - if not card_return_data.get('student').get('photo'): - user = User.objects.get(email=card.student.email) - socialaccount_obj = SocialAccount.objects.filter( - provider="google", user_id=user.id - ) - card_return_data['student']['photo'] = socialaccount_obj[0].extra_data.get('picture') - except: - pass + if not card_return_data.get('student').get('photo'): + return Response({"success": False, "detail": "Student photo not available.", "mess_card": card_return_data}, status=status.HTTP_400_BAD_REQUEST) date = timezone.localtime().date() time = timezone.localtime().time() meal, _ = Meal.objects.get_or_create(mess_card=card, date=date)