Files
2026-09-24 12:32:59 +03:30

54 lines
1.7 KiB
Python

from rest_framework import serializers
from apps.reservations.models import Facility, FacilitySchedule, Reservation, Slot
class FacilitySerializer(serializers.ModelSerializer):
class Meta:
model = Facility
fields = ["id", "name"]
class SlotSerializer(serializers.ModelSerializer):
facility_name = serializers.CharField(source="facility.name", read_only=True)
available = serializers.SerializerMethodField()
class Meta:
model = Slot
fields = [
"id", "facility", "facility_name", "line", "date", "start_time",
"end_time", "capacity", "max_weight_kg", "booked_count", "blocked", "available",
]
def get_available(self, obj):
return obj.is_available()
class FacilityScheduleSerializer(serializers.ModelSerializer):
facility_name = serializers.CharField(source="facility.name", read_only=True)
class Meta:
model = FacilitySchedule
fields = [
"id", "facility", "facility_name", "date", "is_open",
"capacity", "start_time", "end_time", "note",
]
class ReservationSerializer(serializers.ModelSerializer):
slot = SlotSerializer(read_only=True)
customer_id = serializers.UUIDField(source="customer.id", read_only=True)
customer_name = serializers.SerializerMethodField()
class Meta:
model = Reservation
fields = [
"id", "title", "customer", "customer_id", "customer_name", "slot",
"status", "notes", "approved_at", "created_at",
]
read_only_fields = ["customer", "status", "approved_at", "created_at"]
def get_customer_name(self, obj):
user = obj.customer.user
return obj.customer.company_name or user.get_full_name() or user.username