From 7c5ed1e89d908a74bc05e8f28e1169765182a784 Mon Sep 17 00:00:00 2001 From: i701 Date: Wed, 23 Jul 2025 22:10:49 +0500 Subject: [PATCH] feat(payment): enhance list view to support admin access to all payments --- billing/views.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/billing/views.py b/billing/views.py index cfa0018..6001d51 100644 --- a/billing/views.py +++ b/billing/views.py @@ -105,6 +105,30 @@ class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIVi serializer = PaymentSerializer(payment) return Response(serializer.data, status=status.HTTP_201_CREATED) + def list(self, request, *args, **kwargs): + queryset = self.filter_queryset(self.get_queryset()) + all_payments = request.query_params.get("all_payments", "false").lower() in [ + "true", + "1", + "yes", + ] + if ( + request.user.is_authenticated + and getattr(request.user, "is_admin") + and bool(all_payments) + ): + 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 PaymentDetailAPIView(StaffEditorPermissionMixin, generics.RetrieveAPIView): queryset = Payment.objects.select_related("user").all()