From 96dc7b498b702b8283192af1a2ac973983184ba0 Mon Sep 17 00:00:00 2001 From: Andrii Chychkan Date: Sat, 24 Jan 2026 14:31:54 +0200 Subject: [PATCH] fix: create borrowing with payment --- library/serializers.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/library/serializers.py b/library/serializers.py index b90ec4d..f66c3ae 100644 --- a/library/serializers.py +++ b/library/serializers.py @@ -1,3 +1,4 @@ +from django.db import transaction from django.utils import timezone from rest_framework import serializers from library.models import Borrowing, Book @@ -42,17 +43,18 @@ def validate_expected_return_date(self, value): def create(self, validated_data): user = validated_data.pop("user") - borrowing = Borrowing.objects.create(user=user, **validated_data) + with transaction.atomic(): + borrowing = Borrowing.objects.create(user=user, **validated_data) - session = create_payment_session(borrowing) + session = create_payment_session(borrowing) - Payment.objects.create( - borrowing=borrowing, - session_id=session.id, - session_url=session.url, - money=session.total_price, - status=Payment.Status.PENDING, - type=Payment.Type.PAYMENT, - ) + Payment.objects.create( + borrowing=borrowing, + session_id=session.id, + session_url=session.url, + money=session.total_price, + status=Payment.Status.PENDING, + type=Payment.Type.PAYMENT, + ) return borrowing