Files
simple-travel-backend/core/apps/tickets/serializers/tickets/tickets.py
2025-09-19 15:19:32 +05:00

133 lines
4.0 KiB
Python

from rest_framework import serializers
from core.apps.tickets.models import TicketsModel, TicketsImagesModel, TicketsAmenitiesModel, \
TicketsIncludedServicesModel, TicketsItineraryModel, TicketsItineraryImagesModel, TicketsItineraryDestinationsModel, \
TicketsHotelMealsModel, TicketsCommentsModel
from core.apps.accounts.models import User
from core.apps.accounts.serializers.user import UserSerializer
from core.apps.tickets.models.tariff import TariffModel
class TicketsTariffSerializer(serializers.ModelSerializer):
class Meta:
model = TariffModel
fields = ['name']
class CommentUserSerializer(UserSerializer):
class Meta:
model = User
fields = ["id", "username"]
class TicketsCommentsSerializer(serializers.ModelSerializer):
user = CommentUserSerializer(read_only=True)
class Meta:
model = TicketsCommentsModel
fields = ["user", "text", "rating"]
class TicketsHotelMealsSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsHotelMealsModel
fields = ["image", "name", "desc"]
class TicketsItineraryDestinationsSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsItineraryDestinationsModel
fields = ['name']
class TicketsItineraryImagesSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsItineraryImagesModel
fields = ['image']
class TicketsItinerarySerializer(serializers.ModelSerializer):
ticket_itinerary_image = TicketsItineraryImagesSerializer(many=True, read_only=True)
ticket_itinerary_destinations = TicketsItineraryDestinationsSerializer(many=True, read_only=True)
class Meta:
model = TicketsItineraryModel
fields = ["title", "duration", "ticket_itinerary_image", "ticket_itinerary_destinations"]
class TicketsIncludedServicesSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsIncludedServicesModel
fields = ["image", "title", "desc", ]
class TicketsAmenitiesSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsAmenitiesModel
fields = ["name"]
class TicketsImageSerializer(serializers.ModelSerializer):
class Meta:
model = TicketsImagesModel
fields = ["image"]
class BaseTicketsSerializer(serializers.ModelSerializer):
ticket_images = TicketsImageSerializer(many=True, read_only=True)
ticket_amenities = TicketsAmenitiesSerializer(many=True, read_only=True)
ticket_included_services = TicketsIncludedServicesSerializer(many=True, read_only=True)
ticket_itinerary = TicketsItinerarySerializer(many=True, read_only=True)
ticket_hotel_meals = TicketsHotelMealsSerializer(many=True, read_only=True)
ticket_comments = TicketsCommentsSerializer(many=True, read_only=True)
tariff = TicketsTariffSerializer(many=True, read_only=True)
class Meta:
model = TicketsModel
fields = [
"id",
"title",
"price",
"departure_date",
"departure",
"destination",
"passenger_count",
"rating",
"hotel_info",
"duration_days",
"hotel_meals",
"ticket_images",
"ticket_amenities",
"ticket_included_services",
"ticket_itinerary",
"ticket_hotel_meals",
"ticket_comments",
"tariff",
]
class ListTicketsSerializer(BaseTicketsSerializer):
class Meta(BaseTicketsSerializer.Meta): ...
class RetrieveTicketsSerializer(BaseTicketsSerializer):
class Meta(BaseTicketsSerializer.Meta): ...
class CreateTicketsSerializer(BaseTicketsSerializer):
class Meta(BaseTicketsSerializer.Meta):
fields = [
"id",
"title",
"price",
"departure_date",
"departure",
"destination",
"passenger_count",
"rating",
"hotel_info",
"duration_days",
"hotel_meals",
]