import json
from drf_base64.serializers import ModelSerializer
from rest_framework import serializers
from src.dieta_especial.protocolo_padrao.models import (
Alimento,
ProtocoloPadraoDietaEspecial,
SubstituicaoAlimento,
SubstituicaoAlimentoProtocoloPadrao,
)
from src.produto.api.serializers.serializers import (
MarcaSimplesSerializer,
ProdutoSimplesSerializer,
)
from src.terceirizada.api.serializers.serializers import (
EditalSimplesSerializer,
)
[docs]
class AlimentoSerializer(serializers.ModelSerializer):
marca = MarcaSimplesSerializer()
[docs]
class AlimentosSubstitutosSerializer(serializers.ModelSerializer):
tipo = serializers.SerializerMethodField()
[docs]
def get_tipo(self, instance):
return "a"
[docs]
class SubstituicaoAlimentoSerializer(ModelSerializer):
alimento = AlimentoSerializer()
substitutos = ProdutoSimplesSerializer(many=True)
alimentos_substitutos = AlimentoSerializer(many=True)
[docs]
class SubstituicaoAlimentoProtocoloPadraoSerializer(ModelSerializer):
alimento = AlimentoSerializer()
substitutos = ProdutoSimplesSerializer(many=True)
alimentos_substitutos = AlimentoSerializer(many=True)
tipo = serializers.CharField(source="get_tipo_display")
[docs]
class ProtocoloPadraoDietaEspecialSimplesSerializer(serializers.ModelSerializer):
[docs]
class ProtocoloPadraoDietaEspecialSerializer(serializers.ModelSerializer):
status = serializers.CharField(source="get_status_display")
substituicoes = serializers.SerializerMethodField()
historico = serializers.SerializerMethodField()
editais = EditalSimplesSerializer(many=True)
[docs]
def get_historico(self, obj):
return json.loads(obj.historico) if obj.historico else []
[docs]
def get_substituicoes(self, obj):
substituicoes = obj.substituicoes.all().order_by("alimento__nome")
return SubstituicaoAlimentoProtocoloPadraoSerializer(
substituicoes, many=True
).data