From 80e388a2a0cc17fc98c20f6accf12af627538c9a Mon Sep 17 00:00:00 2001 From: i701 Date: Sat, 5 Apr 2025 16:14:28 +0500 Subject: [PATCH] Refactor CreatePaymentView to improve device retrieval logic by using filter instead of get_object_or_404, enhancing error handling for non-existent devices. --- billing/views.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/billing/views.py b/billing/views.py index be003a0..73ad37c 100644 --- a/billing/views.py +++ b/billing/views.py @@ -1,17 +1,16 @@ # Create your views here. # billing/views.py -from django.shortcuts import get_object_or_404 -from .models import Payment, Device from datetime import datetime, timedelta + import requests -from rest_framework.views import APIView -from rest_framework.response import Response -from rest_framework import status from decouple import config -from .serializers import PaymentSerializer -from rest_framework.permissions import AllowAny +from rest_framework import generics, status +from rest_framework.response import Response + from api.mixins import StaffEditorPermissionMixin -from rest_framework import generics + +from .models import Device, Payment +from .serializers import PaymentSerializer class InsufficientFundsError(Exception): @@ -31,7 +30,8 @@ class CreatePaymentView(StaffEditorPermissionMixin, generics.CreateAPIView): print(amount, number_of_months, device_ids) for device_id in device_ids: - device = get_object_or_404(Device, id=device_id) + device = Device.objects.filter(id=device_id, user=user).first() + print("DEVICE", device) if not device: return Response( {"message": f"Device with id {device_id} not found."},