139 lines
3.8 KiB
Python
139 lines
3.8 KiB
Python
"""Establishment serializers."""
|
|
from rest_framework import serializers
|
|
|
|
from establishment import models
|
|
from location.serializers import AddressSerializer
|
|
from main.serializers import MetaDataContentSerializer, AwardSerializer
|
|
from review import models as review_models
|
|
from timetable.models import Timetable
|
|
|
|
|
|
class ContactPhonesSerializer(serializers.ModelSerializer):
|
|
"""Contact phone serializer"""
|
|
class Meta:
|
|
model = models.ContactPhone
|
|
fields = [
|
|
'phone'
|
|
]
|
|
|
|
|
|
class ContactEmailsSerializer(serializers.ModelSerializer):
|
|
"""Contact email serializer"""
|
|
class Meta:
|
|
model = models.ContactEmail
|
|
fields = [
|
|
'email'
|
|
]
|
|
|
|
|
|
class EstablishmentTypeSerializer(serializers.ModelSerializer):
|
|
"""Serializer for EstablishmentType model."""
|
|
|
|
name_translated = serializers.CharField(allow_null=True)
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
|
|
model = models.EstablishmentType
|
|
fields = ('id', 'name_translated')
|
|
|
|
|
|
class EstablishmentSubTypeSerializer(serializers.ModelSerializer):
|
|
"""Serializer for EstablishmentSubType models."""
|
|
|
|
name_translated = serializers.CharField(allow_null=True)
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
|
|
model = models.EstablishmentSubType
|
|
fields = ('id', 'name_translated')
|
|
|
|
|
|
class EstablishmentScheduleSerializer(serializers.ModelSerializer):
|
|
"""Serializer for Establishment model."""
|
|
weekday = serializers.CharField(source='get_weekday_display')
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
model = Timetable
|
|
fields = (
|
|
'weekday',
|
|
'lunch_start',
|
|
'lunch_end',
|
|
'dinner_start',
|
|
'dinner_end',
|
|
)
|
|
|
|
|
|
class ReviewSerializer(serializers.ModelSerializer):
|
|
"""Serializer for model Review."""
|
|
class Meta:
|
|
"""Meta class."""
|
|
model = review_models.Review
|
|
fields = (
|
|
'text',
|
|
)
|
|
|
|
|
|
class CommentSerializer(serializers.ModelSerializer):
|
|
"""Comment serializer"""
|
|
nickname = serializers.CharField(source='author.username')
|
|
image = serializers.ImageField(source='author.image')
|
|
|
|
class Meta:
|
|
"""Serializer for model Comment"""
|
|
model = models.Comment
|
|
fields = (
|
|
'text',
|
|
'mark',
|
|
'nickname',
|
|
'image'
|
|
)
|
|
|
|
|
|
class EstablishmentSerializer(serializers.ModelSerializer):
|
|
"""Serializer for Establishment model."""
|
|
|
|
name_translated = serializers.CharField(allow_null=True)
|
|
description_translated = serializers.CharField(allow_null=True)
|
|
type = EstablishmentTypeSerializer(source='establishment_type')
|
|
subtypes = EstablishmentSubTypeSerializer(many=True)
|
|
address = AddressSerializer()
|
|
tags = MetaDataContentSerializer(many=True)
|
|
awards = AwardSerializer(many=True)
|
|
schedule = EstablishmentScheduleSerializer(source='schedule.schedule',
|
|
many=True,
|
|
allow_null=True)
|
|
phones = ContactPhonesSerializer(read_only=True, many=True, )
|
|
emails = ContactEmailsSerializer(read_only=True, many=True, )
|
|
reviews = ReviewSerializer(source='reviews.last',
|
|
allow_null=True)
|
|
comments = CommentSerializer(many=True,
|
|
allow_null=True)
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
|
|
model = models.Establishment
|
|
fields = (
|
|
'id',
|
|
'name_translated',
|
|
'description_translated',
|
|
'public_mark',
|
|
'price_level',
|
|
'toque_number',
|
|
'price_level',
|
|
'type',
|
|
'subtypes',
|
|
'image',
|
|
'address',
|
|
'tags',
|
|
'awards',
|
|
'schedule',
|
|
'phones',
|
|
'emails',
|
|
'reviews',
|
|
'comments',
|
|
)
|