Initial commit

This commit is contained in:
2026-02-27 15:01:06 +03:00
commit fc06bb6fcd
52 changed files with 1355 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
from rest_framework import serializers
from apps.bookings.models import Booking
from apps.payments.models import Payment, PaymentProvider, PaymentStatus
class PaymentSerializer(serializers.ModelSerializer):
booking_id = serializers.IntegerField(source="booking.id", read_only=True)
class Meta:
model = Payment
fields = [
"id",
"booking_id",
"provider",
"status",
"amount",
"currency",
"external_id",
"metadata",
"created_at",
]
read_only_fields = fields
class PaymentCreateSerializer(serializers.ModelSerializer):
booking_id = serializers.IntegerField(write_only=True)
provider = serializers.ChoiceField(choices=PaymentProvider.choices)
class Meta:
model = Payment
fields = ["booking_id", "provider"]
def validate_booking_id(self, value):
if not Booking.objects.filter(id=value).exists():
raise serializers.ValidationError("Booking not found")
return value
def create(self, validated_data):
booking = Booking.objects.get(id=validated_data["booking_id"])
return Payment.objects.create(
booking=booking,
provider=validated_data["provider"],
status=PaymentStatus.CREATED,
amount=booking.price_amount,
currency=booking.currency,
metadata={},
)