Source code for src.dieta_especial.protocolo_padrao.api.serializers

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 Meta: model = Alimento fields = "__all__" ordering = "nome"
[docs] class AlimentosSubstitutosSerializer(serializers.ModelSerializer): tipo = serializers.SerializerMethodField()
[docs] def get_tipo(self, instance): return "a"
[docs] class Meta: model = Alimento fields = ("uuid", "nome", "tipo")
[docs] class SubstituicaoAlimentoSerializer(ModelSerializer): alimento = AlimentoSerializer() substitutos = ProdutoSimplesSerializer(many=True) alimentos_substitutos = AlimentoSerializer(many=True)
[docs] class Meta: model = SubstituicaoAlimento fields = "__all__"
[docs] class SubstituicaoAlimentoProtocoloPadraoSerializer(ModelSerializer): alimento = AlimentoSerializer() substitutos = ProdutoSimplesSerializer(many=True) alimentos_substitutos = AlimentoSerializer(many=True) tipo = serializers.CharField(source="get_tipo_display")
[docs] class Meta: model = SubstituicaoAlimentoProtocoloPadrao fields = "__all__"
[docs] class ProtocoloPadraoDietaEspecialSimplesSerializer(serializers.ModelSerializer):
[docs] class Meta: model = ProtocoloPadraoDietaEspecial fields = ("nome_protocolo", "uuid")
[docs] class ProtocoloPadraoDietaEspecialSerializer(serializers.ModelSerializer): status = serializers.CharField(source="get_status_display") substituicoes = serializers.SerializerMethodField() historico = serializers.SerializerMethodField() editais = EditalSimplesSerializer(many=True)
[docs] class Meta: model = ProtocoloPadraoDietaEspecial fields = ( "uuid", "nome_protocolo", "status", "orientacoes_gerais", "substituicoes", "editais", "historico", "outras_informacoes", )
[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