Refactor CreatePaymentView to improve device retrieval logic by using filter instead of get_object_or_404, enhancing error handling for non-existent devices.
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 2m34s

This commit is contained in:
i701 2025-04-05 16:14:28 +05:00
parent d386c7e37c
commit 80e388a2a0
Signed by: i701
GPG Key ID: 54A0DA1E26D8E587

View File

@ -1,17 +1,16 @@
# Create your views here. # Create your views here.
# billing/views.py # billing/views.py
from django.shortcuts import get_object_or_404
from .models import Payment, Device
from datetime import datetime, timedelta from datetime import datetime, timedelta
import requests import requests
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from decouple import config from decouple import config
from .serializers import PaymentSerializer from rest_framework import generics, status
from rest_framework.permissions import AllowAny from rest_framework.response import Response
from api.mixins import StaffEditorPermissionMixin from api.mixins import StaffEditorPermissionMixin
from rest_framework import generics
from .models import Device, Payment
from .serializers import PaymentSerializer
class InsufficientFundsError(Exception): class InsufficientFundsError(Exception):
@ -31,7 +30,8 @@ class CreatePaymentView(StaffEditorPermissionMixin, generics.CreateAPIView):
print(amount, number_of_months, device_ids) print(amount, number_of_months, device_ids)
for device_id in 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: if not device:
return Response( return Response(
{"message": f"Device with id {device_id} not found."}, {"message": f"Device with id {device_id} not found."},