"""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.""" text_translated = serializers.CharField(read_only=True) class Meta: """Meta class.""" model = review_models.Review fields = ( 'text_translated', ) 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 EstablishmentEmployeeSerializer(serializers.ModelSerializer): """Serializer for actual employees.""" id = serializers.IntegerField(source='employee.id') name = serializers.CharField(source='employee.name') position_translated = serializers.CharField(source='position.name_translated') awards = AwardSerializer(source='employee.awards', many=True) class Meta: """Meta class.""" model = models.Employee fields = ('id', 'name', 'position_translated') 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) employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees', many=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', 'employees', )