From 087782e35147c63bf728c778a469651a2057aa52 Mon Sep 17 00:00:00 2001 From: i701 Date: Thu, 24 Jul 2025 23:35:24 +0500 Subject: [PATCH] =?UTF-8?q?feat(verification):=20handle=20user=20verificat?= =?UTF-8?q?ion=20not=20found=20scenario=20and=20mark=20user=20as=20verifie?= =?UTF-8?q?d=20=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/views.py | 10 ++++++++++ billing/views.py | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/api/views.py b/api/views.py index 93132d2..2e1fbd0 100644 --- a/api/views.py +++ b/api/views.py @@ -414,6 +414,16 @@ class UserVerifyAPIView(StaffEditorPermissionMixin, generics.UpdateAPIView): serializer = self.get_serializer(user, data=request.data, partial=True) serializer.is_valid(raise_exception=True) result = check_person_api_verification(user_data=user, id_card=user.id_card) + # The verification system might not have the records of every user hence can be skipped if not found and verify directly. + if result.get("error") == "Not Found": + user.verified = True + user.save() + return Response( + { + "message": "User not found in the verification system. User marked as verified." + }, + status=status.HTTP_404_NOT_FOUND, + ) if not result["ok"]: return Response( result, diff --git a/billing/views.py b/billing/views.py index 6001d51..ef3d0cc 100644 --- a/billing/views.py +++ b/billing/views.py @@ -364,6 +364,30 @@ class ListCreateTopupView(StaffEditorPermissionMixin, generics.ListCreateAPIView return queryset return queryset.filter(user=self.request.user) + def list(self, request, *args, **kwargs): + queryset = self.filter_queryset(self.get_queryset()) + all_topups = request.query_params.get("all_topups", "false").lower() in [ + "true", + "1", + "yes", + ] + if ( + request.user.is_authenticated + and getattr(request.user, "is_admin") + and bool(all_topups) + ): + pass + else: + queryset = queryset.filter(user=request.user) + + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + class TopupDetailAPIView(StaffEditorPermissionMixin, generics.RetrieveAPIView): queryset = Topup.objects.all()