"""Product app serializers.""" from rest_framework import serializers from utils.serializers import TranslatedField from product.models import Product, ProductSubType, ProductType from location.serializers import (WineRegionBaseSerializer, WineAppellationBaseSerializer, CountrySimpleSerializer) class ProductSubTypeBaseSerializer(serializers.ModelSerializer): """ProductSubType base serializer""" name_translated = TranslatedField() index_name_display = serializers.CharField(source='get_index_name_display') class Meta: model = ProductSubType fields = [ 'id', 'name_translated', 'index_name_display', ] class ProductTypeBaseSerializer(serializers.ModelSerializer): """ProductType base serializer""" name_translated = TranslatedField() index_name_display = serializers.CharField(source='get_index_name_display') class Meta: model = ProductType fields = [ 'id', 'name_translated', 'index_name_display', ] class ProductBaseSerializer(serializers.ModelSerializer): """Product base serializer.""" name_translated = TranslatedField() description_translated = TranslatedField() category_display = serializers.CharField(source='get_category_display') product_type = ProductTypeBaseSerializer() subtypes = ProductSubTypeBaseSerializer(many=True) wine_region = WineRegionBaseSerializer(allow_null=True) wine_appellation = WineAppellationBaseSerializer(allow_null=True) available_countries = CountrySimpleSerializer(source='country', many=True) class Meta: """Meta class.""" model = Product fields = [ 'id', 'name_translated', 'category_display', 'description_translated', 'available', 'product_type', 'subtypes', 'public_mark', 'wine_region', 'wine_appellation', 'available_countries', ]