diff --git a/billing/urls.py b/billing/urls.py index 492e8cf..f15436f 100644 --- a/billing/urls.py +++ b/billing/urls.py @@ -1,8 +1,9 @@ # billing/urls.py from django.urls import path -from .views import CreatePaymentView, VerifyPaymentView +from .views import ListCreatePaymentView, VerifyPaymentView urlpatterns = [ - path("create-payment/", CreatePaymentView.as_view(), name="create-payment"), + path("payment/", ListCreatePaymentView.as_view(), name="create-payment"), + path("payment//", ListCreatePaymentView.as_view(), name="retrieve-payment"), path("verify-payment/", VerifyPaymentView.as_view(), name="verify-payment"), ] diff --git a/billing/views.py b/billing/views.py index 73ad37c..2dfcf32 100644 --- a/billing/views.py +++ b/billing/views.py @@ -17,9 +17,15 @@ class InsufficientFundsError(Exception): pass -class CreatePaymentView(StaffEditorPermissionMixin, generics.CreateAPIView): +class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIView): serializer_class = PaymentSerializer - queryset = Payment.objects.all() + queryset = Payment.objects.all().select_related("user") + + def get_queryset(self): + queryset = super().get_queryset() + if self.request.user.is_superuser: + return queryset + return queryset.filter(user=self.request.user) def create(self, request): data = request.data @@ -63,6 +69,12 @@ class CreatePaymentView(StaffEditorPermissionMixin, generics.CreateAPIView): return Response(serializer.data, status=status.HTTP_201_CREATED) +class PaymentDetailAPIView(StaffEditorPermissionMixin, generics.RetrieveAPIView): + queryset = Payment.objects.select_related("user", "devices").all() + serializer_class = PaymentSerializer + lookup_field = "pk" + + class VerifyPaymentView(StaffEditorPermissionMixin, generics.UpdateAPIView): serializer_class = PaymentSerializer queryset = Payment.objects.all()