generated from bisco/codex-bootstrap
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
from rest_framework import serializers
|
|
|
|
|
|
class PublicShowImageMixin(serializers.Serializer):
|
|
image_url = serializers.SerializerMethodField()
|
|
|
|
def get_image_url(self, obj):
|
|
request = self.context.get("request")
|
|
return obj.image_url(request=request)
|
|
|
|
|
|
class PublicShowListSerializer(PublicShowImageMixin, serializers.Serializer):
|
|
id = serializers.IntegerField()
|
|
title = serializers.CharField()
|
|
slug = serializers.SlugField()
|
|
summary = serializers.CharField()
|
|
poster_image = serializers.URLField(allow_blank=True)
|
|
|
|
|
|
class PublicVenueSummarySerializer(serializers.Serializer):
|
|
name = serializers.CharField()
|
|
city = serializers.CharField()
|
|
|
|
|
|
class PublicVenueDetailSerializer(PublicVenueSummarySerializer):
|
|
address = serializers.CharField()
|
|
|
|
|
|
class PublicShowSummarySerializer(PublicShowImageMixin, serializers.Serializer):
|
|
title = serializers.CharField()
|
|
slug = serializers.SlugField()
|
|
summary = serializers.CharField()
|
|
|
|
|
|
class PublicPerformanceListSerializer(serializers.Serializer):
|
|
id = serializers.IntegerField()
|
|
show = PublicShowSummarySerializer()
|
|
venue = PublicVenueSummarySerializer()
|
|
starts_at = serializers.DateTimeField()
|
|
booking_enabled = serializers.BooleanField(source="is_booking_enabled")
|
|
available_seats = serializers.IntegerField()
|
|
|
|
|
|
class PublicShowPerformanceSerializer(serializers.Serializer):
|
|
id = serializers.IntegerField()
|
|
starts_at = serializers.DateTimeField()
|
|
venue = PublicVenueSummarySerializer()
|
|
booking_enabled = serializers.BooleanField(source="is_booking_enabled")
|
|
available_seats = serializers.IntegerField()
|
|
|
|
|
|
class PublicShowDetailSerializer(PublicShowListSerializer):
|
|
description = serializers.CharField()
|
|
performances = PublicShowPerformanceSerializer(many=True, source="public_performances")
|
|
|
|
|
|
class PublicPerformanceDetailSerializer(serializers.Serializer):
|
|
id = serializers.IntegerField()
|
|
show = PublicShowSummarySerializer()
|
|
venue = PublicVenueDetailSerializer()
|
|
starts_at = serializers.DateTimeField()
|
|
booking_enabled = serializers.BooleanField(source="is_booking_enabled")
|
|
available_seats = serializers.IntegerField()
|