base

admin

class HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin do Django para horarios de tipos de alimentacao por escola.

Disponibiliza o cadastro administrativo de HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar com o comportamento padrao do Django Admin, permitindo consultar e editar as faixas de horario configuradas para cada escola, periodo escolar e tipo de alimentacao.

property media
class MotivoDRENaoValidaAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin do Django para motivos usados pela DRE ao nao validar solicitacoes.

Mantem o cadastro administrativo de MotivoDRENaoValida com o comportamento padrao do Django Admin, sem customizacoes adicionais de listagem ou formulario.

property media
class TipoAlimentacaoAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin do Django para os tipos de alimentacao do cardapio.

Configura a tela administrativa de TipoAlimentacao, habilitando busca por nome e mantendo o UUID apenas para leitura no formulario de edicao.

search_fields

Campos consultados pela busca textual do admin. Valores: ("nome",).

Type:

tuple[str, …]

readonly_fields

Campos somente leitura no formulario. Valores: ("uuid",).

Type:

tuple[str, …]

property media
readonly_fields = ('uuid',)
search_fields = ('nome',)
class VinculoTipoAlimentacaoModelAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin do Django para vinculos de tipo de alimentacao por periodo e U.E.

Configura a listagem administrativa de VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar, disponibilizando filtros por periodo escolar, tipo de unidade escolar e status de ativacao do vinculo.

list_filter

Filtros laterais disponiveis na listagem. Valores: ("periodo_escolar__nome", "tipo_unidade_escolar__iniciais", "ativo").

Type:

tuple[str, …]

list_filter = ('periodo_escolar__nome', 'tipo_unidade_escolar__iniciais', 'ativo')
property media

models

class TipoAlimentacao(*args, **kwargs)[source]

Bases: ExportModelOperationsMixin('tipo_alimentacao'), Nomeavel, TemChaveExterna, Posicao

Representa um tipo de alimentação que pode compor o cardápio escolar.

Os registros deste modelo são reutilizados em vínculos com período escolar, configurações de horário por unidade educacional e solicitações que dependem do tipo de alimentação servido.

Tipos cadastrados:
  • Desjejum

  • Colação

  • Almoço

  • Refeição

  • Sobremesa

  • Lanche

  • Lanche 4h

  • Lanche Emergencial

Tipos de alimentação de CEI:
  • Desjejum

  • Colação

  • Almoço

  • Refeição da Tarde

Tipos de alimentação de EMEF/EMEI/CIEJA, etc:
  • Refeição

  • Sobremesa

  • Lanche

  • Lanche 4h

  • Lanche Emergencial

id: int

Descrição: Chave primária inteira criada automaticamente pelo Django para identificar o registro.

uuid: uuid.UUID

Origem: dados_comuns/behaviors.py

Descrição: Identificador externo único do tipo de alimentação, usado em integrações e endpoints que expõem UUID.

objects: django.db.models.manager.Manager[TipoAlimentacao]

Descrição: Manager padrão do modelo, usado para construir consultas como all(), filter() e get().

nome: str

Origem: dados_comuns/behaviors.py

Descrição: Nome legível do tipo de alimentação exibido em cadastros, vínculos e solicitações.

posicao: int

Origem: dados_comuns/behaviors.py

Descrição: Posição usada para ordenar os tipos de alimentação nas telas e regras do cardápio.

vinculos: django.db.models.QuerySet[VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar]

Descrição: Relação reversa M:N com VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar.

Reúne os vínculos de período escolar e tipo de unidade escolar em que esse tipo de alimentação pode ser servido.

horariodocombodotipodealimentacaoporunidadeescolar_set: django.db.models.QuerySet[HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar]

Descrição: Relação reversa 1:N com HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar.

Lista as faixas de horário cadastradas para este tipo de alimentação em escolas e períodos escolares específicos.

inclusaoalimentacaodacei_set: django.db.models.QuerySet[InclusaoAlimentacaoDaCEI]

Descrição: Relação reversa M:N com InclusaoAlimentacaoDaCEI.

Reúne as solicitações de inclusão de alimentação por CEI que utilizam este tipo de alimentação no campo tipos_alimentacao.

inversaocardapio_set: django.db.models.QuerySet[InversaoCardapio]

Descrição: Relação reversa M:N com InversaoCardapio.

Reúne as inversões de cardápio que incluem este tipo de alimentação.

parametrizacao_valor_tipo_alimentacao: django.db.models.QuerySet[ParametrizacaoFinanceiraTabelaValor]

Descrição: Relação reversa 1:N com ParametrizacaoFinanceiraTabelaValor.

Expõe as parametrizações financeiras em que este tipo de alimentação foi associado a um valor de tabela.

periodos_escolares: django.db.models.QuerySet[escola.PeriodoEscolar]

Descrição: Relação reversa M:N com escola.PeriodoEscolar.

Indica em quais períodos escolares este tipo de alimentação pode ser ofertado diretamente.

quantidadedealunosemeiinclusaodealimentacaocemei_set: django.db.models.QuerySet[QuantidadeDeAlunosEMEIInclusaoDeAlimentacaoCEMEI]

Descrição: Relação reversa M:N com QuantidadeDeAlunosEMEIInclusaoDeAlimentacaoCEMEI.

Reúne as quantidades de alunos da parte EMEI das inclusões CEMEI que usam este tipo de alimentação.

quantidadeporperiodo_set: django.db.models.QuerySet[QuantidadePorPeriodo]

Descrição: Relação reversa M:N com QuantidadePorPeriodo.

Lista as quantidades por período de inclusões normais ou contínuas que incluem este tipo de alimentação.

quantidadeporperiodosuspensaoalimentacao_set: django.db.models.QuerySet[QuantidadePorPeriodoSuspensaoAlimentacao]

Descrição: Relação reversa M:N com QuantidadePorPeriodoSuspensaoAlimentacao.

Reúne os registros de quantidade por período usados em suspensões de alimentação que referenciam este tipo de alimentação.

recreionasferiasunidadetipoalimentacao_set: django.db.models.QuerySet[RecreioNasFeriasUnidadeTipoAlimentacao]

Descrição: Relação reversa 1:N com RecreioNasFeriasUnidadeTipoAlimentacao.

Lista as configurações de tipo de alimentação usadas pelas unidades participantes do programa Recreio nas Férias.

respostas_relatorio_imr: django.db.models.QuerySet[RespostaTipoAlimentacao]

Descrição: Relação reversa 1:N com RespostaTipoAlimentacao.

Reúne as respostas de formulários de IMR cujo valor selecionado foi este tipo de alimentação.

substituicoes_alimento_para: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolar]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolar.

Identifica as substituições de alteração de cardápio em que este tipo de alimentação aparece como destino da troca.

substituicoes_alimentos_de: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolar]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolar.

Identifica as substituições de alteração de cardápio em que este tipo de alimentação aparece como origem da troca.

substituicoes_cei_tipo_alimentacao_de: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEI]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEI.

Reúne as substituições de cardápio de CEI em que este tipo de alimentação faz parte do conjunto substituído.

substituicoes_cei_tipo_alimentacao_para: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEI]

Descrição: Relação reversa 1:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEI.

Reúne as substituições de cardápio de CEI em que este tipo de alimentação é o resultado final da troca.

substituicoes_cemei_cei_alimento_para: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.

Lista as substituições da parte CEI do CEMEI em que este tipo de alimentação é usado como destino da troca.

substituicoes_cemei_cei_tipo_alimentacao_de: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.

Lista as substituições da parte CEI do CEMEI em que este tipo de alimentação compõe o conjunto de origem.

substituicoes_cemei_emei_alimento_para: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.

Lista as substituições da parte EMEI do CEMEI em que este tipo de alimentação aparece como destino da troca.

substituicoes_cemei_emei_tipo_alimentacao_de: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI]

Descrição: Relação reversa M:N com SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.

Lista as substituições da parte EMEI do CEMEI em que este tipo de alimentação compõe o conjunto de origem.

suspensoes_periodo_escolar: django.db.models.QuerySet[SuspensaoAlimentacaoNoPeriodoEscolar]

Descrição: Relação reversa M:N com SuspensaoAlimentacaoNoPeriodoEscolar.

Reúne as suspensões de alimentação por período escolar em que este tipo de alimentação foi afetado.

valormedicao_set: django.db.models.QuerySet[ValorMedicao]

Descrição: Relação reversa 1:N com ValorMedicao.

Lista os valores lançados na Medição Inicial que referenciam este tipo de alimentação.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

descontos_financeiros

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_reverse_many_to_one_manager() defined below.

class HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar(*args, **kwargs)[source]

Bases: TemChaveExterna

Define a faixa de horário de um tipo de alimentação em uma escola.

O cadastro relaciona uma escola, um período escolar e um tipo de alimentação a uma janela de atendimento. Os vínculos opcionais preservam a compatibilidade com registros legados e permitem configurações parciais.

id: int

Descrição: Chave primária inteira criada automaticamente pelo Django para identificar a configuração de horário.

uuid: uuid.UUID

Origem: dados_comuns/behaviors.py

Descrição: Identificador externo único da configuração de horário, usado em integrações e endpoints que expõem UUID.

objects: django.db.models.manager.Manager[HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar]

Descrição: Manager padrão do modelo, usado para construir consultas como all(), filter() e get().

hora_inicial: datetime.time

Descrição: Horário inicial em que o tipo de alimentação pode ser ofertado.

hora_final: datetime.time

Descrição: Horário final da janela de atendimento configurada.

escola: escola.Escola | None

Descrição: Escola à qual a configuração de horário se aplica. Pode ser None em cadastros legados.

escola_id: int | None

Descrição: Chave estrangeira inteira da escola associada ao registro. Espelha o campo escola e pode ficar nula em cadastros legados.

tipo_alimentacao: cardapio.TipoAlimentacao | None

Descrição: Tipo de alimentação atendido pela faixa de horário configurada.

tipo_alimentacao_id: int | None

Descrição: Chave estrangeira inteira do tipo de alimentação configurado para a faixa de horário.

periodo_escolar: escola.PeriodoEscolar | None

Descrição: Período escolar em que a faixa de horário é válida.

periodo_escolar_id: int | None

Descrição: Chave estrangeira inteira do período escolar ao qual a faixa de horário está vinculada.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

class VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar(*args, **kwargs)[source]

Bases: ExportModelOperationsMixin('vinculo_alimentacao_periodo_escolar_tipo_ue'), Ativavel, TemChaveExterna

Relaciona tipos de alimentação permitidos a um período escolar e tipo de U.E.

O vínculo funciona como uma regra de negócio do cardápio, definindo quais tipos de alimentação podem ser servidos para uma combinação específica de tipo de unidade escolar e período escolar.

Exemplos:
  • Uma CEI no período da MANHA pode servir Desjejum, Colação e Almoço.

  • Uma EMEF no período INTEGRAL pode servir Refeição, Sobremesa, Lanche, Lanche 4h e Lanche Emergencial.

id: int

Descrição: Chave primária inteira criada automaticamente pelo Django para identificar o vínculo.

uuid: uuid.UUID

Origem: dados_comuns/behaviors.py

Descrição: Identificador externo único do vínculo, usado em integrações e endpoints que expõem UUID.

objects: django.db.models.manager.Manager[VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar]

Descrição: Manager padrão do modelo, usado para construir consultas como all(), filter() e get().

ativo: bool

Origem: dados_comuns/behaviors.py

Descrição: Indica se o vínculo está habilitado para uso nas regras vigentes do cardápio.

tipo_unidade_escolar: escola.TipoUnidadeEscolar | None

Descrição: Tipo de unidade escolar ao qual a regra de alimentação se aplica.

tipo_unidade_escolar_id: int | None

Descrição: Chave estrangeira inteira do tipo de unidade escolar associado ao vínculo.

periodo_escolar: escola.PeriodoEscolar | None

Descrição: Período escolar coberto pelo vínculo.

periodo_escolar_id: int | None

Descrição: Chave estrangeira inteira do período escolar coberto pelo vínculo.

tipos_alimentacao: django.db.models.QuerySet[TipoAlimentacao]

Descrição: Relação M:N com os tipos de alimentação autorizados para a combinação de período escolar e tipo de unidade escolar.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

class MotivoDRENaoValida(*args, **kwargs)[source]

Bases: ExportModelOperationsMixin('motivo_dre_nao_valida'), Nomeavel, TemChaveExterna

Armazena motivos usados pela DRE para não validar uma solicitação no módulo de Gestão de Alimentação.

Os registros deste modelo são exibidos quando uma solicitação que passa pela Diretoria Regional de Educação é invalidada.

Exemplos:
  • Em desacordo com o contrato

  • Preenchimento incorreto

  • Outro

id: int

Descrição: Chave primária inteira criada automaticamente pelo Django para identificar o motivo.

uuid: uuid.UUID

Origem: dados_comuns/behaviors.py

Descrição: Identificador externo único do motivo, usado em integrações e endpoints que expõem UUID.

objects: django.db.models.manager.Manager[MotivoDRENaoValida]

Descrição: Manager padrão do modelo, usado para construir consultas como all(), filter() e get().

nome: str

Origem: dados_comuns/behaviors.py

Descrição: Nome legível do motivo usado pela DRE para não validar uma solicitação.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

api

Camada de API da subapp base de cardapio.

serializers

Serializers da subapp base do modulo de cardapio.

Reune serializers de leitura usados para expor tipos de alimentacao, configuracoes de horario por escola, vinculos de periodo/tipo de unidade e motivos de nao validacao da DRE.

class HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa horarios configurados para tipos de alimentacao por escola.

Retorna a faixa de horario com os relacionamentos de escola, tipo de alimentacao e periodo escolar ja expandidos por serializers simples.

Viewsets que utilizam este serializer:
  • HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarViewSet: retornado por get_serializer_class() nas acoes de leitura.

class Meta[source]

Bases: object

fields = ('uuid', 'hora_inicial', 'hora_final', 'escola', 'tipo_alimentacao', 'periodo_escolar')
model

alias of HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar

class MotivoDRENaoValidaSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa os motivos usados pela DRE para nao validar solicitacoes.

Expoe os campos publicos de MotivoDRENaoValida para consumo em listas e seletores da API.

Viewsets que utilizam este serializer:
  • MotivosDRENaoValidaViewSet: uso direto como serializer_class nas acoes de listagem e detalhamento.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of MotivoDRENaoValida

class TipoAlimentacaoSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa tipos de alimentacao com sua representacao completa de leitura.

Expoe os campos publicos de TipoAlimentacao usados na API base e em serializers aninhados que retornam os tipos de alimentacao permitidos para horarios e vinculos.

Viewsets que utilizam este serializer:
  • TipoAlimentacaoViewSet: uso direto como serializer_class nas

    acoes padrao do ModelViewSet.

  • HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarViewSet: uso

    indireto, aninhado em HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializer.

  • VinculoTipoAlimentacaoViewSet: uso indireto, aninhado em

    VinculoTipoAlimentoSimplesSerializer e VinculoTipoAlimentoPeriodoSerializer.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of TipoAlimentacao

class TipoAlimentacaoSimplesSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa uma visao resumida dos tipos de alimentacao.

Retorna apenas UUID e nome, sendo usado quando o payload precisa listar os tipos de alimentacao vinculados a um periodo escolar sem incluir todos os campos do modelo.

Viewsets que utilizam este serializer:
  • Nenhum diretamente.

  • Uso indireto em VinculosPorTipoUnidadeEscolarViewSet, por meio de TipoUnidadeEscolarAgrupadoSerializer.

class Meta[source]

Bases: object

fields = ('uuid', 'nome')
model

alias of TipoAlimentacao

class TipoUnidadeEscolarAgrupadoSerializer(*args, **kwargs)[source]

Bases: Serializer

Serializa tipos de unidade escolar agrupados com seus vinculos.

Recebe uma estrutura agregada em memoria contendo o tipo de unidade e os vinculos associados e monta a resposta final com periodos escolares e tipos de alimentacao permitidos.

Viewsets que utilizam este serializer:
  • VinculosPorTipoUnidadeEscolarViewSet: uso direto na action list.

static agrupar_vinculos_por_tipo_ue(vinculos)[source]

Agrupa vinculos ativos pelo UUID do tipo de unidade escolar.

Parameters:

vinculos (Iterable[VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar]) – Vinculos a serem agrupados.

Returns:

Lista ordenada por iniciais contendo os dados do tipo de unidade escolar e a colecao de vinculos correspondente.

Return type:

list[dict]

get_periodos_escolares(obj)[source]

Monta os periodos escolares agrupados para um tipo de unidade.

Parameters:

obj (dict) – Dicionario agregado contendo a chave vinculos com os vinculos do tipo de unidade escolar.

Returns:

Lista de periodos escolares com UUID, nome e tipos de alimentacao serializados.

Return type:

list[dict]

class VinculoTipoAlimentoPeriodoSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa vinculos agrupando o periodo pelo nome exibivel.

Converte o periodo escolar em um campo textual nome e retorna os tipos de alimentacao relacionados para compor respostas resumidas por periodo.

Viewsets que utilizam este serializer:
  • Nenhum diretamente no modulo.

  • Pode ser reutilizado por endpoints que precisem expor vinculos por periodo escolar em formato resumido.

class Meta[source]

Bases: object

fields = ('nome', 'tipos_alimentacao')
model

alias of VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar

get_nome(obj)[source]

Retorna o nome do periodo escolar associado ao vinculo.

Parameters:

obj (VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar) – Vinculo serializado.

Returns:

Nome do periodo escolar relacionado ao vinculo.

Return type:

str

class VinculoTipoAlimentoSimplesSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa um vinculo ativo entre periodo, tipo de U.E. e alimentacoes.

Retorna o tipo de unidade escolar, o periodo escolar e a colecao de tipos de alimentacao autorizados para aquela combinacao.

Viewsets que utilizam este serializer:
  • VinculoTipoAlimentacaoViewSet: uso direto como serializer_class nas acoes de leitura.

class Meta[source]

Bases: object

fields = ('uuid', 'tipo_unidade_escolar', 'periodo_escolar', 'tipos_alimentacao')
model

alias of VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar

serializers_create

Serializers de escrita da subapp base do modulo de cardapio.

Centraliza a criacao e atualizacao de horarios por escola e de vinculos entre tipo de unidade escolar, periodo escolar e tipos de alimentacao.

class HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializerCreate(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa a escrita de horarios de tipos de alimentacao por escola.

Resolve os relacionamentos por UUID, valida a consistencia da faixa de horario e impede a criacao de combinacoes duplicadas para a mesma escola, tipo de alimentacao e periodo escolar.

Viewsets que utilizam este serializer:
  • HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarViewSet: retornado por get_serializer_class() nas acoes create, update e partial_update.

class Meta[source]

Bases: object

fields = ('uuid', 'hora_inicial', 'hora_final', 'escola', 'tipo_alimentacao', 'periodo_escolar')
model

alias of HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar

create(validated_data)[source]

Cria um horario validando duplicidade por escola e periodo.

Parameters:

validated_data (dict) – Dados validados da configuracao de horario.

Returns:

Instancia criada.

Return type:

HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar

Raises:

ValidationError – Quando ja existe um horario para a mesma combinacao de escola, tipo de alimentacao e periodo escolar.

update(instance, validated_data)[source]

Atualiza um horario existente com os dados recebidos.

Parameters:
Returns:

Instancia atualizada e salva.

Return type:

HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar

validate(attrs)[source]

Valida a ordem cronologica da faixa de horario informada.

Parameters:

attrs (dict) – Dados normalizados pelo serializer antes da persistencia.

Returns:

Os atributos recebidos apos a validacao.

Return type:

dict

Raises:

ValidationError – Quando hora_inicial e maior ou igual a hora_final.

class VinculoTipoAlimentoCreateSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializa a escrita de vinculos entre periodo, tipo de U.E. e alimentacoes.

Resolve por UUID o tipo de unidade escolar, o periodo escolar e a lista de tipos de alimentacao autorizados para a combinacao editada.

Viewsets que utilizam este serializer:
  • VinculoTipoAlimentacaoViewSet: retornado por get_serializer_class() nas acoes create, update e partial_update.

class Meta[source]

Bases: object

fields = ('uuid', 'tipos_alimentacao', 'tipo_unidade_escolar', 'periodo_escolar')
model

alias of VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar

update(instance, validated_data)[source]

Atualiza um vinculo e substitui seus tipos de alimentacao.

Parameters:
Returns:

Instancia atualizada e salva.

Return type:

VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar

validate_tipos_alimentacao(tipos_alimentacao)[source]

Garante que a lista de tipos de alimentacao nao seja nula.

Parameters:

tipos_alimentacao (list[TipoAlimentacao]) – Tipos de alimentacao resolvidos pelo campo SlugRelatedField.

Returns:

A mesma lista validada.

Return type:

list[TipoAlimentacao]

Raises:

ValidationError – Quando o campo e informado como nulo.

validators

Validadores de negocio da API base de cardapio.

escola_nao_pode_cadastrar_dois_combos_iguais(escola, tipo_alimentacao, periodo_escolar)[source]

Impede a criacao de horarios duplicados para a mesma combinacao.

Garante que cada escola tenha no maximo um horario cadastrado para um determinado tipo de alimentacao em um mesmo periodo escolar.

Parameters:
  • escola (Escola) – Escola dona da configuracao.

  • tipo_alimentacao (TipoAlimentacao) – Tipo de alimentacao configurado.

  • periodo_escolar (PeriodoEscolar) – Periodo escolar da configuracao.

Returns:

True quando nao existe duplicidade para a combinacao.

Return type:

bool

Raises:

ValidationError – Quando ja existe um horario com a mesma escola, tipo de alimentacao e periodo escolar.

hora_inicio_nao_pode_ser_maior_que_hora_final(hora_inicial, hora_final)[source]

Valida se o horario inicial e anterior ao horario final.

Parameters:
  • hora_inicial (datetime.time) – Horario inicial informado.

  • hora_final (datetime.time) – Horario final informado.

Returns:

True quando a faixa de horario e valida.

Return type:

bool

Raises:

ValidationError – Quando hora_inicial e maior ou igual a hora_final.

viewsets

Viewsets da API base do modulo de cardapio.

Expoe endpoints para consulta e manutencao de tipos de alimentacao, horarios por escola, vinculos de periodo/tipo de unidade escolar e motivos de nao validacao usados pela DRE.

class HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarViewSet(**kwargs)[source]

Bases: ModelViewSet

Gerencia horarios de tipos de alimentacao configurados por escola.

Disponibiliza leitura, criacao, atualizacao e uma action customizada para listar os horarios associados a uma escola especifica.

filtro_por_escola(request, escola_uuid=None)[source]

Lista horarios cadastrados para a escola informada.

Parameters:
  • request (Request) – Requisicao HTTP recebida pela action.

  • escola_uuid (str | None) – UUID da escola usado como filtro.

Returns:

Resposta paginada com os horarios encontrados para a escola.

Return type:

Response

get_serializer_class()[source]

Seleciona o serializer de leitura ou escrita conforme a acao.

Returns:

HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializerCreate nas acoes de escrita; caso contrario, HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializer.

Return type:

type

lookup_field = 'uuid'
queryset = <QuerySet de HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolar>
serializer_class

alias of HorarioDoComboDoTipoDeAlimentacaoPorUnidadeEscolarSerializer

class MotivosDRENaoValidaViewSet(**kwargs)[source]

Bases: ReadOnlyModelViewSet

Expoe consulta somente leitura dos motivos de nao validacao da DRE.

lookup_field = 'uuid'
queryset = <QuerySet de MotivoDRENaoValida>
serializer_class

alias of MotivoDRENaoValidaSerializer

class TipoAlimentacaoViewSet(**kwargs)[source]

Bases: ModelViewSet

Expoe o CRUD de tipos de alimentacao da base de cardapio.

Utiliza TipoAlimentacaoSerializer em todas as acoes padrao do ModelViewSet e identifica instancias pelo campo uuid.

lookup_field = 'uuid'
queryset = <QuerySet de TipoAlimentacao>
serializer_class

alias of TipoAlimentacaoSerializer

class VinculoTipoAlimentacaoViewSet(**kwargs)[source]

Bases: ModelViewSet, RetrieveModelMixin, ListModelMixin, GenericViewSet

Gerencia vinculos ativos entre tipo de U.E., periodo e alimentacoes.

Alem das acoes padrao de leitura e escrita, expoe endpoints customizados para filtrar vinculos por escola, por tipo de unidade e por cenarios especificos de inclusao de alimentacao.

atualizar_lista_de_vinculos(request)[source]

Atualiza em lote os tipos de alimentacao de uma lista de vinculos.

Parameters:

request (Request) – Requisicao HTTP cujo corpo deve conter a chave vinculos com UUIDs e listas de tipos_alimentacao.

Returns:

Resposta paginada com os vinculos atualizados, ou erro 400 quando o payload obrigatorio nao e informado.

Return type:

Response

filtro_por_escola(request, escola_uuid=None)[source]

Lista vinculos aplicaveis a uma escola em uma data de referencia.

Para escolas CEMEI, monta uma ordenacao especial por unidade e periodo. Nos demais casos, filtra pelos periodos da escola e pela unidade historica valida na data consultada.

Parameters:
  • request (Request) – Requisicao HTTP com filtros opcionais como mes, ano e pega_atualmente.

  • escola_uuid (str | None) – UUID da escola consultada.

Returns:

Resposta paginada com os vinculos ordenados para a escola.

Return type:

Response

filtro_por_tipo_ue(request, tipo_unidade_escolar_uuid=None)[source]

Lista vinculos ativos de um tipo especifico de unidade escolar.

Parameters:
  • request (Request) – Requisicao HTTP recebida pela action.

  • tipo_unidade_escolar_uuid (str | None) – UUID do tipo de unidade escolar filtrado.

Returns:

Resposta paginada com os vinculos encontrados.

Return type:

Response

get_serializer_class()[source]

Seleciona o serializer de escrita ou leitura conforme a acao.

Returns:

VinculoTipoAlimentoCreateSerializer nas acoes de escrita; caso contrario, VinculoTipoAlimentoSimplesSerializer.

Return type:

type

get_vinculos_inclusoes_evento_especifico(mes, ano, tipo_solicitacao, escola)[source]

Busca vinculos necessarios para inclusoes de Evento Especifico.

Considera inclusoes normais autorizadas por Evento Especifico e cruza os periodos obtidos com os vinculos da escola para montar o conjunto de vinculos elegiveis.

Para escolas CEMEI, tambem consulta inclusoes do tipo InclusaoDeAlimentacaoCEMEI com motivo Evento Especifico autorizadas no mes, coletando os periodos escolares das quantidades EMEI dessas inclusoes.

Parameters:
  • mes (str | int) – Mes de referencia da consulta.

  • ano (str | int) – Ano de referencia da consulta.

  • tipo_solicitacao (str | None) – Parametro mantido por compatibilidade com a assinatura da chamada.

  • escola (Escola) – Escola utilizada na filtragem dos grupos e vinculos.

Returns:

Vinculos compativeis com o cenario consultado.

Return type:

QuerySet[VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar]

lookup_field = 'uuid'
motivo_inclusao_especifico(request)[source]

Lista vinculos permitidos para o motivo de inclusao especifico.

Parameters:

request (Request) – Requisicao HTTP que deve informar tipo_unidade_escolar_iniciais em query_params.

Returns:

Lista serializada dos vinculos filtrados ou erro 400 quando o parametro obrigatorio nao e enviado.

Return type:

Response

queryset = <QuerySet de VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar>
serializer_class

alias of VinculoTipoAlimentoSimplesSerializer

trata_inclusao_continua_medicao_inicial(request, escola, ano, pega_atualmente)[source]

Calcula os periodos escolares a considerar na inclusao continua.

Combina os periodos escolares da escola com os periodos extras retornados pelo endpoint de inclusao continua, quando o mes e enviado na requisicao.

Parameters:
  • request (Request) – Requisicao HTTP com os filtros atuais.

  • escola (Escola) – Escola cujos periodos serao avaliados.

  • ano (str | int) – Ano de referencia para consulta dos periodos.

  • pega_atualmente (bool | str) – Indicador usado pelo metodo periodos_escolares da escola.

Returns:

Periodos resultantes da combinacao entre o calendario regular da escola e a inclusao continua, quando houver.

Return type:

QuerySet[PeriodoEscolar]

vinculos_inclusoes_evento_especifico_autorizadas(request)[source]

Retorna vinculos usados em inclusoes autorizadas de Evento Especifico.

Parameters:

request (Request) – Requisicao HTTP com escola_uuid, mes, ano e tipo_solicitacao em query_params.

Returns:

Lista serializada dos vinculos encontrados.

Return type:

Response

class VinculosPorTipoUnidadeEscolarViewSet(**kwargs)[source]

Bases: ListModelMixin, GenericViewSet

Lista vinculos ativos agrupados por tipo de unidade escolar.

Usa um serializer agregador para montar a resposta final a partir dos vinculos e seus relacionamentos pre-carregados.

list(request)[source]

Lista todos os tipos de U.E. com seus periodos e alimentacoes.

Parameters:

request (Request) – Requisicao HTTP recebida pela action list.

Returns:

Resposta no formato {"results": [...]} contendo os tipos de unidade escolar agrupados com seus periodos e tipos de alimentacao.

Return type:

Response

fixtures

Fixtures da subapp base de cardapio.

Agrupa arquivos de apoio para carga de dados e factories usados nos testes da subapp base.

fixtures/factories

Factories de teste da subapp base de cardapio.

Factories para os modelos base do modulo de cardapio.

Utiliza factory_boy para criar instancias de teste dos modelos de tipos de alimentacao e de vinculos entre periodo escolar e tipo de unidade escolar.

class TipoAlimentacaoFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo TipoAlimentacao.

Gera instancias com nome unico combinando uma sequencia numerica com um valor produzido pelo Faker.

nome = <factory.declarations.Sequence object>
class VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolarFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar.

Cria automaticamente o tipo de unidade escolar e o periodo escolar via subfactories. Suporta adicionar tipos de alimentacao relacionados pelo parametro tipos_alimentacao.

periodo_escolar = SubFactory(PeriodoEscolarFactory)
tipo_unidade_escolar = SubFactory(TipoUnidadeEscolarFactory)
tipos_alimentacao = <factory.declarations.PostGeneration object>