alteracao_tipo_alimentacao_cemei
admin
- class AlteracaoCardapioCEMEIModelAdmin(model, admin_site)[source]
Bases:
ModelAdminAdmin do Django para solicitações de alteração do tipo de alimentação CEMEI.
Configura a listagem administrativa de
AlteracaoCardapioCEMEI, exibindo o UUID, a data e o status de cada solicitação, e habilitando filtro por status.- list_display
Colunas exibidas na listagem do admin. Valores:
["uuid", "data", "status"].- Type:
list[str]
- list_filter
Filtros laterais disponíveis na listagem. Valores:
["status"].- Type:
list[str]
models
- class AlteracaoCardapioCEMEI(*args, **kwargs)[source]
Bases:
CriadoEm,CriadoPor,TemChaveExterna,TemObservacao,FluxoAprovacaoPartindoDaEscola,TemIdentificadorExternoAmigavel,Logs,TemPrioridade,SolicitacaoForaDoPrazo,EhAlteracaoCardapio,TemTerceirizadaConferiuGestaoAlimentacaoModelo responsável por armazenar Solicitações de Alteração do Tipo de Alimentação para escolas do tipo CEMEI.
Representa uma solicitação formal de troca do tipo de alimentação servida em determinado(s) período(s) escolar(es).
Para os CEMEIs, a solicitação pode ir em um único dia (
alterar_dia) ou em um intervalo de datas (data_inicial/data_final).- As substituições são divididas por tipo de unidade interna:
CEI (com faixas etárias)
EMEI (com quantidade de alunos por período).
O que é uma Alteração do Tipo de Alimentação?
É uma solicitação de troca do tipo de alimentação servida em um determinado dia.
Quais os tipos de Alteração do Tipo de Alimentação possíveis?
- RPL (Refeição por Lanche)
substitui a refeição do dia por um lanche
cada escola só pode pedir uma RPL por mês
na Medição Inicial, o lançamento de lanche neste dia é dobrado e a refeição é zerada.
- LPR (Lanche por Refeição)
substitui o lanche do dia por uma refeição
não há limite de solicitações de LPR por mês
na Medição Inicial, o lançamento de lanche neste dia é zerado e a refeição é dobrada.
- Lanche Emergencial (Não disponível para CEI, apenas para EMEI)
substitui todas as alimentações do dia por lanche emergencial
única solicitação que pode ser feita sem o mínimo de 2 dias úteis de antecedência.
- Tipos de unidade contempladas:
CEMEI
CEU CEMEI
- Exceções não contempladas:
EMEF
EMEI
CEI
etc.
- DESCRICAO
Descrição legível do tipo de solicitação. Utilizado no dashboard de Gestão de Alimentação para identificar o tipo de cada solicitação. O valor é a string
"Alteração do Tipo de Alimentação CEMEI".- Type:
str
- TODOS
Constante indicando que a solicitação abrange tanto alunos CEI quanto EMEI.
- Type:
str
- CEI
Constante indicando que a solicitação afeta apenas alunos CEI.
- Type:
str
- EMEI
Constante indicando que a solicitação afeta apenas alunos EMEI.
- Type:
str
- alunos_cei_e_ou_emei: str
Origem:
alteracao_tipo_alimentacao_cemei/models.pyDescrição: Indica quais alunos são afetados pela solicitação: apenas CEI, apenas EMEI ou ambos (TODOS).
Os valores possíveis são definidos pela constante
STATUS_CHOICES:TODOS— todos os alunos (padrão)CEI— apenas alunos da parte CEIEMEI— apenas alunos da parte EMEI
- alterar_dia: datetime.date | None
Origem:
alteracao_tipo_alimentacao_cemei/models.pyDescrição: Data única para a qual a substituição de alimentação se aplica.
Quando preenchido, indica que a solicitação é de dia único. Mutuamente exclusivo com
data_inicial/data_final. Pode serNonequando a solicitação utiliza intervalo de datas.
- criado_em: datetime.datetime
Origem:
dados_comuns/behaviors.pyDescrição: Timestamp preenchido automaticamente na criação do registro.
- criado_por: perfil.Usuario | None
Origem:
dados_comuns/behaviors.pyDescrição: Usuário responsável pela criação do registro. O campo ainda permite
nulleblank.
- criado_por_id: int | None
Origem:
dados_comuns/behaviors.pyDescrição: Identificador do usuário responsável pela criação do registro.
Corresponde à chave primária de
perfil.Usuario. Pode serNone(campo permitenulleblank).
- data_inicial: datetime.date | None
Origem:
alteracao_tipo_alimentacao_cemei/models.pyDescrição: Data de início do intervalo de substituição de alimentação.
Quando preenchido, indica que a solicitação abrange um período de datas. Deve ser usado em conjunto com
data_final. Pode serNonequando a solicitação é de dia único (alterar_dia).
- data_final: datetime.date | None
Origem:
alteracao_tipo_alimentacao_cemei/models.pyDescrição: Data de fim do intervalo de substituição de alimentação.
Deve ser usado em conjunto com
data_inicial. Pode serNonequando a solicitação é de dia único (alterar_dia).
- datas_intervalo: django.db.models.QuerySet[DataIntervaloAlteracaoCardapioCEMEI]
Relação reversa 1:N com
DataIntervaloAlteracaoCardapioCEMEI.Representa as datas individuais do intervalo de substituição, permitindo cancelamentos pontuais por data.
- escola: escola.Escola | None
Origem:
EhAlteracaoCardapioDescrição: Escola que efetuou a solicitação de alteração do tipo de alimentação. O campo ainda permite
nulleblank.
- escola_id: int | None
Origem:
EhAlteracaoCardapioDescrição: Identificador da escola que efetuou a solicitação de alteração do tipo de alimentação.
Corresponde à chave primária de
escola.Escola. Pode serNone(campo permitenulleblank).
- foi_solicitado_fora_do_prazo: bool
Origem:
dados_comuns/behaviors.pyDescrição: Indica se a solicitação foi criada fora do prazo regular de antecedência.
Quando
True, significa que o pedido foi criado com 5 dias úteis ou menos de antecedência.
- id: int
Origem:
django.db.models.ModelDescrição: Identificador interno do registro no banco de dados.
Corresponde à chave primária gerada automaticamente pelo Django.
- motivo: cardapio.MotivoAlteracaoCardapio | None
Origem:
EhAlteracaoCardapioDescrição: Motivo associado à solicitação de alteração do tipo de alimentação. O campo ainda permite
nulleblank.
- motivo_id: int | None
Origem:
EhAlteracaoCardapioDescrição: Identificador do motivo associado à solicitação de alteração do tipo de alimentação.
Corresponde à chave primária de
MotivoAlteracaoCardapio. Pode serNone(campo permitenulleblank).
- observacao: str
Origem:
dados_comuns/behaviors.pyDescrição: Campo de texto livre para registrar observações complementares da solicitação.
Pode ser uma string vazia, pois o campo permite
blank.
- rastro_dre: escola.DiretoriaRegional | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Diretoria Regional de Educação vinculada ao rastro histórico da solicitação.
Representa a DRE da escola no momento em que o rastro do pedido foi salvo.
- rastro_dre_id: int | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Identificador da DRE vinculada ao rastro histórico da solicitação.
Corresponde à chave primária de
escola.DiretoriaRegional. Pode serNone(campo permitenulleblank).
- rastro_escola: escola.Escola | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Escola registrada no rastro histórico da solicitação.
Representa a escola vinculada ao pedido no momento em que o rastro foi salvo.
- rastro_escola_id: int | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Identificador da escola registrada no rastro histórico da solicitação.
Corresponde à chave primária de
escola.Escola. Pode serNone(campo permitenulleblank).
- rastro_lote: escola.Lote | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Lote registrado no rastro histórico da solicitação.
Representa o lote da escola no momento em que o rastro foi salvo.
- rastro_lote_id: int | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Identificador do lote registrado no rastro histórico da solicitação.
Corresponde à chave primária de
escola.Lote. Pode serNone(campo permitenulleblank).
- rastro_terceirizada: terceirizada.Terceirizada | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Terceirizada registrada no rastro histórico da solicitação.
Representa a empresa terceirizada vinculada ao lote da escola no momento em que o rastro foi salvo.
- rastro_terceirizada_id: int | None
Origem:
FluxoAprovacaoPartindoDaEscolaDescrição: Identificador da terceirizada registrada no rastro histórico da solicitação.
Corresponde à chave primária de
terceirizada.Terceirizada. Pode serNone(campo permitenulleblank).
- status: str
Origem:
django_xworkflows.models.StateFieldDescrição: Estado atual da solicitação dentro do workflow de aprovação partindo da escola.
Armazena um dos valores definidos em
PedidoAPartirDaEscolaWorkflow, comoRASCUNHO,DRE_A_VALIDARouCODAE_AUTORIZADO.
- substituicoes_cemei_cei_periodo_escolar: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI]
Relação reversa 1:N com
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.Representa todas as substituições de tipo de alimentação vinculadas à parte CEI desta solicitação CEMEI, organizadas por período escolar e faixa etária.
- substituicoes_cemei_emei_periodo_escolar: django.db.models.QuerySet[SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI]
Relação reversa 1:N com
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.Representa todas as substituições de tipo de alimentação vinculadas à parte EMEI desta solicitação CEMEI, organizadas por período escolar e quantidade de alunos.
- terceirizada_conferiu_gestao: bool
Origem:
dados_comuns/behaviors.pyDescrição: Indica se a terceirizada marcou ciência da solicitação na Gestão de Alimentação.
Quando
True, registra que a empresa conferiu o pedido sem necessariamente alterar o status do workflow.
- get_status_display()
Origem:
django_xworkflows.models.StateFieldDescrição: Relacionado ao campo
statusdo workflow.Retorna a representação legível (label) do status atual da instância.
O valor retornado corresponde ao texto definido em
statesdo workflow, sendo mais apropriado para exibição em interfaces (ex: telas e relatórios).- Returns:
Texto legível do status
- Return type:
str
Exemplo:
CODAE_AUTORIZADOretorna"CODAE autorizou pedido".
- uuid: uuid.UUID
Origem:
dados_comuns/behaviors.pyDescrição: Identificador único do registro.
Gerado automaticamente no momento da criação, sendo utilizado como identificador externo amigável.
Pode ser utilizado em integrações externas e URLs públicas, evitando a exposição do identificador interno (ID).
- exception NotUpdated
Bases:
ObjectNotUpdated,DatabaseError
- codae_autoriza
Autoriza a solicitação de Gestão de Alimentação como CODAE pedida com mais de 5 dias úteis de antecedência. Só é possível autorizar uma solicitação que foi validada pela Diretoria Regional.
Este método é herdado de django_xworkflows.
- Possui um hook (
_codae_autoriza_hook) para, após a autorização: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.enviar e-mail para as partes interessadas notificando sobre a autorização.
- Possui um hook (
- codae_autoriza_questionamento
CODAE autoriza a solicitação de Gestão de Alimentação pedida com menos de 5 dias úteis de antecedência, mediante resposta positiva do questionamento para a empresa terceirizada que atende a escola. Só é possível autorizar uma solicitação que foi validada pela Diretoria Regional.
- Uma solicitação pode ser autorizada se:
teve uma resposta positiva do questionamento pela empresa terceirizada que atende a escola, ou seja, resposta_sim_nao=True no log de questionamento.
Este método é herdado de django_xworkflows.
- Possui um hook (
_codae_autoriza_hook) para, após a autorização: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.enviar e-mail para as partes interessadas notificando sobre a autorização.
- codae_nega
CODAE nega a solicitação de Gestão de Alimentação. Só é possível negar uma solicitação que foi validada pela Diretoria Regional.
- Uma solicitação pode ser negada se, por exemplo:
infringir alguma regra do edital
tiver algum dado incorreto ou inconsistente (por exemplo, um Kit Lanche não pode ser solicitado para um “passeio” nas dependências da escola. É apenas para passeios externos.)
Este método é herdado de django_xworkflows.
- Possui um hook (
_codae_recusou_hook) para, após a negação: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.enviar e-mail para as partes interessadas notificando sobre a negação.
- codae_nega_questionamento
CODAE nega a solicitação de Gestão de Alimentação pedida com menos de 5 dias úteis de antecedência. Só é possível negar uma solicitação que foi validada pela Diretoria Regional.
- Uma solicitação pode ser negada se:
não tiver uma resposta positiva do questionamento pela empresa terceirizada que atende a escola, ou seja, resposta_sim_nao=False no log de questionamento.
Este método é herdado de django_xworkflows.
- Possui um hook (
_codae_recusou_hook) para, após a negação: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.enviar e-mail para as partes interessadas notificando sobre a negação.
- codae_questiona
CODAE questiona a empresa terceirizada se é possível atender a solicitação de Gestão de Alimentação pedida com menos de 5 dias úteis de antecedência. Só é possível questionar uma solicitação que foi validada pela Diretoria Regional.
Uma solicitação pedida com menos de 5 dias úteis de antecedência não pode ser autorizada imediatamente, pois a empresa terceirizada que atende a escola precisa confirmar se é possível atender a solicitação nesse prazo. Portanto, o CODAE questiona a solicitação para obter essa confirmação.
- Exceção (pode ser autorizado imediatamente, sem questionamento):
Alteração do Tipo de Alimentação - Lanche Emergencial
Este método é herdado de django_xworkflows.
- Possui um hook (
_codae_questiona_hook) para, após o questionamento: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.
- property data
Retorna a data da solicitação, priorizando
alterar_dia.Para solicitações de dia único, retorna
alterar_dia. Para solicitações por intervalo, retornadata_inicial.- Returns:
Data do evento ou
Nonese nenhum campo estiver preenchido.- Return type:
datetime.date | None
- property datas
Retorna todas as datas do intervalo formatadas e concatenadas em uma string.
- Returns:
Datas no formato
"DD/MM/YYYY"separadas por vírgula e espaço, por exemplo"01/03/2026, 02/03/2026".- Return type:
str
- dre_nao_valida
DRE não valida a solicitação de Gestão de Alimentação.
Este método é herdado de django_xworkflows.
- Possui um hook (
_dre_nao_valida_hook) para, após a não validação: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.enviar e-mail para as partes interessadas notificando sobre a não validação.
- Possui um hook (
- dre_pede_revisao
Deprecado.
Este método é herdado de django_xworkflows.
- dre_valida
DRE valida a solicitação de Gestão de Alimentação.
Este método é herdado de django_xworkflows.
- Possui um hook (
_dre_valida_hook) para, após a validação: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.
- Possui um hook (
- escola_revisa
Deprecado.
Este método é herdado de django_xworkflows.
- property existe_dia_cancelado
Verifica se ao menos uma data do intervalo foi cancelada individualmente.
- Returns:
Truese existir algumaDataIntervaloAlteracaoCardapioCEMEIcomcancelado=True,Falsecaso contrário.- Return type:
bool
- property inclusoes
Retorna um atalho para
datas_intervalo.- Returns:
Manager reverso das datas do intervalo vinculadas.
- Return type:
django.db.models.Manager
- inicia_fluxo
Inicia o fluxo da solicitação de Gestão de Alimentação (envia a solicitação para DRE validar).
Só é possível iniciar uma solicitação que esteja em RASCUNHO.
Este método é herdado de django_xworkflows.
- Possui um hook (
_inicia_fluxo_hook) para, após o início do fluxo: definir o campo
foi_solicitado_fora_do_prazocom base na prioridade da solicitação.salvar os rastros históricos da solicitação (escola, DRE, lote e terceirizada).
criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.
- Possui um hook (
- property numero_alunos
Retorna o total de alunos somando as faixas etárias CEI e as quantidades EMEI.
- Returns:
Soma da quantidade de alunos em todas as faixas etárias de
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEIe das quantidades deSubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.- Return type:
int
- property path
Retorna o caminho relativo do relatório desta solicitação no frontend.
- Returns:
URL relativa no formato
"alteracao-do-tipo-de-alimentacao-cemei/relatorio?uuid=<uuid>&tipoSolicitacao=solicitacao-cemei".- Return type:
str
- property periodos_escolares
Retorna uma lista com os períodos escolares afetados por esta solicitação.
Combina os períodos escolares das substituições CEI (
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI) e das substituições EMEI (SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI).- Returns:
Lista de nomes dos períodos escolares afetados, sem garantia de ordem e podendo conter duplicatas.
- Return type:
list[str]
- salvar_log_transicao(status_evento, usuario, **kwargs)[source]
Registra no log a transição de status da solicitação.
Cria uma entrada em
LogSolicitacoesUsuarioassociada a esta alteração de cardápio CEMEI.- Parameters:
status_evento (int) – Código do evento de status.
usuario (django.contrib.auth.models.AbstractUser) – Usuário responsável pela transição.
**kwargs –
Parâmetros opcionais do log. justificativa (str): Texto justificando a transição. resposta_sim_nao (bool): Indica resposta booleana associada
ao log. O padrão é
False.
- Returns:
None
- solicitacao_dict_para_relatorio(label_data, data_log, instituicao)[source]
Serializa os dados da solicitação CEMEI para uso em relatórios.
Retorna um dicionário com as informações relevantes da alteração de cardápio CEMEI, incluindo rastreamentos históricos, datas, motivo e substituições divididas por tipo de unidade interna (CEI e EMEI).
- Parameters:
label_data (str) – Rótulo descritivo para o campo de data no relatório.
data_log (datetime.date) – Data do log de referência exibida no relatório.
instituicao (object) – Instituição solicitante, mantida por compatibilidade de assinatura.
- Returns:
Dicionário com os campos utilizados no relatório.
- Return type:
dict
- substituicoes_dict()[source]
Retorna as substituições de alimentação CEMEI serializadas como lista de dicionários.
Agrupa as substituições por período escolar, incluindo dados tanto das substituições CEI (por faixa etária) quanto das substituições EMEI (por quantidade de alunos).
- Returns:
Lista de dicionários com os campos
periodo,faixas_ceiefaixas_emei.- Return type:
list[dict]
- terceirizada_responde_questionamento
A empresa terceirizada responde ao questionamento da CODAE sobre a possibilidade de atendimento da solicitação.
Só é possível responder um questionamento quando a solicitação está em CODAE_QUESTIONADO.
Caso a empresa responda que sim (resposta_sim_nao=True), a solicitação pode ser autorizada normalmente pela CODAE, mesmo tendo sido pedida com menos de 5 dias úteis de antecedência.
Caso a empresa responda que não (resposta_sim_nao=False), a solicitação deve ser negada pela CODAE, pois a empresa, pelo contrato, tem o direito de negar solicitações pedidas com menos de 5 dias úteis de antecedência.
Este método é herdado de django_xworkflows.
- Possui um hook (
_terceirizada_responde_questionamento_hook) para, após a resposta: criar uma entrada de log específico para esta ação, utilizando o método
salvar_log_transicao.registrar no log a justificativa informada e a resposta booleana em
resposta_sim_nao.
- Possui um hook (
- terceirizada_toma_ciencia
Deprecado.
Este método é herdado de django_xworkflows.
Antigamente, este método era utilizado para registrar a ciência da empresa terceirizada sobre a solicitação.
O status final do fluxo era TERCEIRIZADA_TOMOU_CIENCIA.
- Atualmente:
o status final é CODAE_AUTORIZADO.
o status TERCEIRIZADA_TOMOU_CIENCIA foi deprecado.
a empresa toma ciência sem alterar o status da solicitação, através do campo
terceirizada_conferiu_gestao.
- property tipo
Retorna a descrição legível do tipo da solicitação.
- Returns:
String
"Alteração do Tipo de Alimentação".- Return type:
str
- tipos_alimentacao_de(nome_periodo_escolar=None)[source]
Retorna uma lista com os tipos de alimentação substituídos nesta solicitação.
Combina os tipos de alimentação de origem das substituições CEI (
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI) e EMEI (SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI), filtrando opcionalmente por período escolar.- Parameters:
nome_periodo_escolar (str, optional) – Nome do período escolar para restringir o resultado. Se
None, considera todas as substituições. Padrão:None.- Returns:
Lista de nomes dos tipos de alimentação substituídos, sem garantia de ordem e podendo conter duplicatas.
- Return type:
list[str]
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI(*args, **kwargs)[source]
Bases:
TemChaveExternaRepresenta uma substituição de tipo de alimentação por período escolar para a parte CEI do CEMEI.
Está vinculada a uma
AlteracaoCardapioCEMEIe define quais tipos de alimentação serão substituídos e por quais tipos resultantes em um determinado período escolar. As quantidades de alunos afetados são especificadas por faixa etária emFaixaEtariaSubstituicaoAlimentacaoCEMEICEI.- alteracao_cardapio: cardapio.AlteracaoCardapioCEMEI | None
Origem:
django.db.models.ForeignKeyDescrição: Solicitação de alteração do tipo de alimentação CEMEI à qual esta substituição CEI pertence.
Pode ser
Noneporque o campo permitenulleblank.
- alteracao_cardapio_id: int | None
Origem:
django.db.models.ForeignKeyDescrição: Identificador da solicitação de alteração do tipo de alimentação CEMEI associada a esta substituição.
Corresponde à chave primária de
AlteracaoCardapioCEMEI. Pode serNoneporque o campo permitenulleblank.
- faixas_etarias: django.db.models.QuerySet[FaixaEtariaSubstituicaoAlimentacaoCEMEICEI]
Relação reversa 1:N com
FaixaEtariaSubstituicaoAlimentacaoCEMEICEI.Representa as faixas etárias com suas respectivas quantidades e matriculados para esta substituição de período escolar CEI.
- id: int
Origem:
django.db.models.ModelDescrição: Identificador interno do registro no banco de dados.
Corresponde à chave primária gerada automaticamente pelo Django.
- periodo_escolar: escola.PeriodoEscolar
Origem:
django.db.models.ForeignKeyDescrição: Período escolar ao qual a substituição de alimentação CEI se aplica.
Exemplo: manhã, tarde, noite ou integral.
- periodo_escolar_id: int
Origem:
django.db.models.ForeignKeyDescrição: Identificador do período escolar ao qual esta substituição CEI se aplica.
Corresponde à chave primária de
escola.PeriodoEscolar.
- tipos_alimentacao_de: django.db.models.Manager[TipoAlimentacao]
Origem:
django.db.models.ManyToManyFieldDescrição: Conjunto de tipos de alimentação originais que serão substituídos nesta solicitação CEI.
Trata-se de uma relação muitos-para-muitos com
TipoAlimentacao.
- tipos_alimentacao_para: django.db.models.Manager[TipoAlimentacao]
Origem:
django.db.models.ManyToManyFieldDescrição: Conjunto de tipos de alimentação que passarão a ser oferecidos no lugar dos tipos originais (lado CEI).
Trata-se de uma relação muitos-para-muitos com
TipoAlimentacao.
- uuid: uuid.UUID
Origem:
dados_comuns/behaviors.pyDescrição: Identificador único do registro.
Gerado automaticamente no momento da criação, sendo utilizado como identificador externo.
- exception NotUpdated
Bases:
ObjectNotUpdated,DatabaseError
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI(*args, **kwargs)[source]
Bases:
TemChaveExterna,MatriculadosQuandoCriadoRepresenta uma substituição de tipo de alimentação por período escolar para a parte EMEI do CEMEI.
Está vinculada a uma
AlteracaoCardapioCEMEIe define quais tipos de alimentação serão substituídos e por quais tipos resultantes em um determinado período escolar. A quantidade de alunos é informada como um número inteiro simples (qtd_alunos), diferente do CEI que usa faixas etárias.- alteracao_cardapio: cardapio.AlteracaoCardapioCEMEI | None
Origem:
django.db.models.ForeignKeyDescrição: Solicitação de alteração do tipo de alimentação CEMEI à qual esta substituição EMEI pertence.
Pode ser
Noneporque o campo permitenulleblank.
- alteracao_cardapio_id: int | None
Origem:
django.db.models.ForeignKeyDescrição: Identificador da solicitação de alteração do tipo de alimentação CEMEI associada a esta substituição.
Corresponde à chave primária de
AlteracaoCardapioCEMEI. Pode serNoneporque o campo permitenulleblank.
- id: int
Origem:
django.db.models.ModelDescrição: Identificador interno do registro no banco de dados.
Corresponde à chave primária gerada automaticamente pelo Django.
- matriculados_quando_criado: int
Origem:
dados_comuns/behaviors.pyDescrição: Número total de alunos matriculados no período escolar EMEI no momento em que a solicitação foi criada.
Mantém um registro histórico da matrícula, independentemente de alterações posteriores.
- periodo_escolar: escola.PeriodoEscolar
Origem:
django.db.models.ForeignKeyDescrição: Período escolar ao qual a substituição de alimentação EMEI se aplica.
Exemplo: manhã, tarde, noite ou integral.
- periodo_escolar_id: int
Origem:
django.db.models.ForeignKeyDescrição: Identificador do período escolar ao qual esta substituição EMEI se aplica.
Corresponde à chave primária de
escola.PeriodoEscolar.
- qtd_alunos: int
Origem:
alteracao_tipo_alimentacao_cemei/models.pyDescrição: Quantidade de alunos da parte EMEI afetados por esta substituição de alimentação.
Diferentemente do lado CEI (que usa faixas etárias), a parte EMEI expressa a quantidade diretamente como um inteiro positivo. O valor padrão é
0.
- tipos_alimentacao_de: django.db.models.Manager[TipoAlimentacao]
Origem:
django.db.models.ManyToManyFieldDescrição: Conjunto de tipos de alimentação originais que serão substituídos nesta solicitação EMEI.
Trata-se de uma relação muitos-para-muitos com
TipoAlimentacao.
- tipos_alimentacao_para: django.db.models.Manager[TipoAlimentacao]
Origem:
django.db.models.ManyToManyFieldDescrição: Conjunto de tipos de alimentação que passarão a ser oferecidos no lugar dos tipos originais (lado EMEI).
Trata-se de uma relação muitos-para-muitos com
TipoAlimentacao.
- uuid: uuid.UUID
Origem:
dados_comuns/behaviors.pyDescrição: Identificador único do registro.
Gerado automaticamente no momento da criação, sendo utilizado como identificador externo.
- exception NotUpdated
Bases:
ObjectNotUpdated,DatabaseError
- class FaixaEtariaSubstituicaoAlimentacaoCEMEICEI(*args, **kwargs)[source]
Bases:
TemChaveExterna,TemFaixaEtariaEQuantidade,MatriculadosQuandoCriadoRepresenta a quantidade de alunos de uma faixa etária em uma substituição CEI do CEMEI.
Está vinculada a
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEIe detalha quantos alunos de cada faixa etária são afetados pela substituição, juntamente com o número de matriculados no momento da criação da solicitação.- faixa_etaria: escola.FaixaEtaria
Origem:
dados_comuns/behaviors.pyDescrição: Faixa etária a que se refere esta entrada de substituição de alimentação CEI do CEMEI.
Exemplo: de 0 a 1 ano, de 1 a 2 anos, etc.
- faixa_etaria_id: int
Origem:
dados_comuns/behaviors.pyDescrição: Identificador da faixa etária associada a esta entrada.
Corresponde à chave primária de
escola.FaixaEtaria.
- id: int
Origem:
django.db.models.ModelDescrição: Identificador interno do registro no banco de dados.
Corresponde à chave primária gerada automaticamente pelo Django.
- matriculados_quando_criado: int
Origem:
dados_comuns/behaviors.pyDescrição: Número de alunos matriculados nesta faixa etária no momento em que a solicitação foi criada.
Mantém um registro histórico da matrícula, independentemente de alterações posteriores.
- quantidade: int
Origem:
dados_comuns/behaviors.pyDescrição: Quantidade de alunos desta faixa etária afetados pela substituição de alimentação.
- substituicao_alimentacao: cardapio.SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI
Origem:
django.db.models.ForeignKeyDescrição: Substituição de alimentação no período escolar CEI do CEMEI à qual esta faixa etária pertence.
- substituicao_alimentacao_id: int
Origem:
django.db.models.ForeignKeyDescrição: Identificador da substituição de alimentação no período escolar CEI associada a esta faixa etária.
Corresponde à chave primária de
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.
- uuid: uuid.UUID
Origem:
dados_comuns/behaviors.pyDescrição: Identificador único do registro.
Gerado automaticamente no momento da criação, sendo utilizado como identificador externo.
- exception NotUpdated
Bases:
ObjectNotUpdated,DatabaseError
- class DataIntervaloAlteracaoCardapioCEMEI(*args, **kwargs)[source]
Bases:
CanceladoIndividualmente,CriadoEm,TemData,TemChaveExterna,TemIdentificadorExternoAmigavelRepresenta uma data específica pertencente ao intervalo de uma
AlteracaoCardapioCEMEI.Permite que cada dia do intervalo seja tratado individualmente, possibilitando cancelamentos pontuais sem invalidar toda a solicitação.
- alteracao_cardapio_cemei: cardapio.AlteracaoCardapioCEMEI
Origem:
django.db.models.ForeignKeyDescrição: Solicitação de alteração do tipo de alimentação CEMEI à qual esta data do intervalo pertence.
- alteracao_cardapio_cemei_id: int
Origem:
django.db.models.ForeignKeyDescrição: Identificador da solicitação CEMEI associada a esta data do intervalo.
Corresponde à chave primária de
AlteracaoCardapioCEMEI.
- cancelado: bool
Origem:
dados_comuns/behaviors.pyDescrição: Indica se esta data específica do intervalo foi cancelada individualmente.
Quando
True, a data foi excluída do escopo da solicitação sem invalidar as demais datas. O padrão éFalse.
- cancelado_justificativa: str
Origem:
dados_comuns/behaviors.pyDescrição: Justificativa fornecida ao cancelar individualmente esta data do intervalo.
Pode ser uma string vazia quando não há justificativa registrada.
- cancelado_em: datetime.datetime | None
Origem:
dados_comuns/behaviors.pyDescrição: Timestamp preenchido automaticamente no momento em que esta data do intervalo foi cancelada individualmente.
Pode ser
Noneenquanto o cancelamento não tiver ocorrido.
- cancelado_por: perfil.Usuario | None
Origem:
dados_comuns/behaviors.pyDescrição: Usuário responsável pelo cancelamento individual desta data do intervalo.
Pode ser
Nonese o cancelamento ainda não ocorreu ou se o campo não foi preenchido.
- cancelado_por_id: int | None
Origem:
dados_comuns/behaviors.pyDescrição: Identificador do usuário responsável pelo cancelamento individual desta data do intervalo.
Corresponde à chave primária de
perfil.Usuario. Pode serNonese o cancelamento ainda não ocorreu ou se o campo não foi preenchido.
- criado_em: datetime.datetime
Origem:
dados_comuns/behaviors.pyDescrição: Timestamp preenchido automaticamente na criação do registro.
- data: datetime.date
Origem:
dados_comuns/behaviors.pyDescrição: Data específica que compõe o intervalo da solicitação CEMEI.
- id: int
Origem:
django.db.models.ModelDescrição: Identificador interno do registro no banco de dados.
Corresponde à chave primária gerada automaticamente pelo Django.
- uuid: uuid.UUID
Origem:
dados_comuns/behaviors.pyDescrição: Identificador único do registro.
Gerado automaticamente no momento da criação, sendo utilizado como identificador externo.
- exception NotUpdated
Bases:
ObjectNotUpdated,DatabaseError
api
serializers
- class AlteracaoCardapioCEMEISerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de leitura para
AlteracaoCardapioCEMEI.Utilizado pelo
AlteracoesCardapioCEMEIViewSetnas actions de listagem e recuperação de solicitações. Expande todos os campos relacionados com representações completas, incluindo as substituições separadas por parte CEI (substituicoes_cemei_cei_periodo_escolar) e EMEI (substituicoes_cemei_emei_periodo_escolar), datas do intervalo, rastro de terceirizada e logs de transição.- class Meta[source]
Bases:
object- exclude = ('id',)
- model
alias of
AlteracaoCardapioCEMEI
- class FaixaEtariaSubstituicaoAlimentacaoCEMEICEISerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de leitura para
FaixaEtariaSubstituicaoAlimentacaoCEMEICEI.Expande o campo
faixa_etariacom a representação completa viaFaixaEtariaSerializer.
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEISerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de leitura para
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.Expande
periodo_escolar,faixas_etarias,tipos_alimentacao_deetipos_alimentacao_paracom seus respectivos serializers aninhados.
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEISerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de leitura para
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.Expande
periodo_escolar,tipos_alimentacao_deetipos_alimentacao_paracom seus respectivos serializers aninhados.
serializers_create
- class AlteracaoCardapioCEMEISerializerCreate(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de escrita para
AlteracaoCardapioCEMEI.Utilizado pelo
AlteracoesCardapioCEMEIViewSetnas actions de criação e atualização de solicitações. Coordena a persistência aninhada das substituições CEI, EMEI e datas de intervalo.- class Meta[source]
Bases:
object- exclude = ('id',)
- model
alias of
AlteracaoCardapioCEMEI
- create(validated_data)[source]
Cria uma
AlteracaoCardapioCEMEIcom todas as suas entidades aninhadas.Valida duplicidades de lanche emergencial e RPL; extrai e persiste separadamente as substituições CEI, EMEI e datas do intervalo.
- Parameters:
validated_data (dict) – Dados validados pelo serializer.
- Returns:
Instância recém-criada.
- Return type:
- Raises:
rest_framework.exceptions.ValidationError – Se houver duplicidade de solicitação de lanche emergencial ou RPL para o mesmo mês.
- criar_datas_intervalo(datas_intervalo, instance)[source]
Cria as datas do intervalo vinculadas à solicitação CEMEI.
- Parameters:
datas_intervalo (list[dict]) – Lista de dados de datas a serem criadas.
instance (AlteracaoCardapioCEMEI) – Solicitação CEMEI à qual as datas serão vinculadas.
- Returns:
None
- criar_faixas_etarias_cemei(faixas_etarias, substituicao)[source]
Cria as faixas etárias CEI associadas a uma substituição.
- Parameters:
faixas_etarias (list[dict]) – Lista de dados das faixas etárias a serem criadas.
substituicao (SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI) – Instância já criada à qual as faixas serão vinculadas.
- Returns:
None
- criar_substituicoes_cemei_cei(substituicoes_cemei_cei_periodo_escolar, alteracao_cemei)[source]
Cria as substituições de período escolar CEI da solicitação CEMEI.
Para cada substituição, vincula
alteracao_cardapio, define os types M2M e cria as faixas etárias aninhadas.- Parameters:
substituicoes_cemei_cei_periodo_escolar (list[dict]) – Lista de dados de substituições CEI.
alteracao_cemei (AlteracaoCardapioCEMEI) – Solicitação CEMEI à qual as substituições serão vinculadas.
- Returns:
None
- criar_substituicoes_cemei_emei(substituicoes_cemei_emei_periodo_escolar, alteracao_cemei)[source]
Cria as substituições de período escolar EMEI da solicitação CEMEI.
Para cada substituição, vincula
alteracao_cardapioe define os types M2M. Diferente do lado CEI, não há faixas etárias aninhadas.- Parameters:
substituicoes_cemei_emei_periodo_escolar (list[dict]) – Lista de dados de substituições EMEI.
alteracao_cemei (AlteracaoCardapioCEMEI) – Solicitação CEMEI à qual as substituições serão vinculadas.
- Returns:
None
- update(instance, validated_data)[source]
Atualiza uma
AlteracaoCardapioCEMEIrecriando todas as entidades aninhadas.Remove todas as substituições e datas do intervalo existentes antes de recrear com os novos dados. Valida duplicidades de lanche emergencial.
- Parameters:
instance (AlteracaoCardapioCEMEI) – Instância a ser atualizada.
validated_data (dict) – Dados validados pelo serializer.
- Returns:
Instância atualizada.
- Return type:
- Raises:
rest_framework.exceptions.ValidationError – Se houver duplicidade de solicitação de lanche emergencial.
- validate_data(data)[source]
Valida a data principal da solicitação CEMEI.
Aplica as seguintes regras de negócio: - não pode ser uma data no passado; - deve ser solicitada com a antecedência mínima necessária; - deve estar dentro do ano corrente.
- Parameters:
data (datetime.date) – Data a ser validada.
- Returns:
A mesma data, se válida.
- Return type:
datetime.date
- Raises:
serializers.ValidationError – Se qualquer regra de validação for violada.
- class DatasIntervaloAlteracaoCardapioCEMEICreateSerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de escrita para
DataIntervaloAlteracaoCardapioCEMEI.Aceita
alteracao_cardapio_cemeipor UUID (campo opcional preenchido programaticamente no momento da criação) e implementacreatepara instanciar diretamente o modelo.- class Meta[source]
Bases:
object- exclude = ('id',)
- model
alias of
DataIntervaloAlteracaoCardapioCEMEI
- class FaixaEtariaSubstituicaoAlimentacaoCEMEICEICreateSerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de escrita para
FaixaEtariaSubstituicaoAlimentacaoCEMEICEI.Aceita
faixa_etariapor UUID e referencia aSubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEIde forma opcional.
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEICreateSerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de escrita para
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.Aceita
alteracao_cardapio,periodo_escolar,tipos_alimentacao_de,tipos_alimentacao_paraefaixas_etariaspor UUID. O campofaixas_etariasé aninhado e criado em cascata pelo métodocriar_substituicoes_cemei_ceido serializer pai.
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEICreateSerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializer de escrita para
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.Aceita
alteracao_cardapio,periodo_escolar,tipos_alimentacao_deetipos_alimentacao_parapor UUID. Diferente do lado CEI, não possui faixas etárias; a quantidade de alunos é informada diretamente no campoqtd_alunosdo modelo.
viewsets
- class AlteracoesCardapioCEMEIViewSet(**kwargs)[source]
Bases:
AlteracoesCardapioViewSet,EscolaIniciaCancela,DREValida,CodaeAutoriza,CodaeQuestionaTerceirizadaResponde,TerceirizadaTomaCienciaViewSet para Solicitações de Alteração do Tipo de Alimentação para escolas CEMEI e CEU CEMEI.
Herda o fluxo de aprovação completo de
AlteracoesCardapioViewSete adiciona os mixins de transição de status específicos (EscolaIniciaCancela,DREValida,CodaeAutoriza,CodaeQuestionaTerceirizadaResponde,TerceirizadaTomaCiencia). O serializer de leitura éAlteracaoCardapioCEMEISerializere o de escrita éAlteracaoCardapioCEMEISerializerCreate.- get_queryset()[source]
Retorna o queryset de
AlteracaoCardapioCEMEIfiltrado por tipo de usuário.Aplica filtros de instituição de acordo com o tipo do usuário autenticado (escola, diretoria regional ou terceirizada). Permite filtro adicional por
statusvia query param.- Returns:
Queryset filtrado de
AlteracaoCardapioCEMEI.- Return type:
django.db.models.QuerySet
- get_serializer_class()[source]
Retorna o serializer adequado à action executada.
- Returns:
AlteracaoCardapioCEMEISerializerCreatepara actions de escrita (create,update,partial_update) eAlteracaoCardapioCEMEISerializerpara as demais.- Return type:
type
- relatorio(request, uuid=None)[source]
Gera e retorna o relatório PDF da solicitação CEMEI.
- Parameters:
request (rest_framework.request.Request) – Requisição HTTP.
uuid (str, optional) – UUID da solicitação. Preenchido automaticamente pelo roteador.
- Returns:
Resposta HTTP com o relatório em PDF.
- Return type:
django.http.HttpResponse
- solicitacoes_codae(request, filtro_aplicado='sem_filtro')[source]
Retorna as solicitações CEMEI visíveis pela CODAE autenticada.
Filtra opcionalmente por diretoria regional e lote via query params
diretoria_regionalelote.- Parameters:
request (rest_framework.request.Request) – Requisição HTTP.
filtro_aplicado (str) – Filtro temporal aplicado. Padrão:
constants.SEM_FILTRO.
- Returns:
JSON com chave
resultscontendo a lista de solicitações serializadas.- Return type:
rest_framework.response.Response
- solicitacoes_diretoria_regional(request, filtro_aplicado='sem_filtro')[source]
Retorna as solicitações CEMEI visíveis pela Diretoria Regional autenticada.
Filtra opcionalmente por lote via query param
lote.- Parameters:
request (rest_framework.request.Request) – Requisição HTTP.
filtro_aplicado (str) – Filtro temporal aplicado. Padrão:
constants.SEM_FILTRO.
- Returns:
JSON com chave
resultscontendo a lista de solicitações serializadas.- Return type:
rest_framework.response.Response
fixtures
fixtures/factories
Factories para os modelos de Alteração do Tipo de Alimentação CEMEI.
Utiliza factory_boy para criação de instâncias de teste dos modelos
relacionados à alteração de cardápio para escolas do tipo CEMEI e CEU CEMEI.
- class AlteracaoCardapioCEMEIFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
AlteracaoCardapioCEMEI.Cria a escola solicitante, o motivo e os campos de rastreio (escola, lote, DRE e terceirizada) via subfactories.
- escola = SubFactory(EscolaFactory)
- motivo = SubFactory(MotivoAlteracaoCardapioFactory)
- rastro_dre = SubFactory(DiretoriaRegionalFactory)
- rastro_escola = SubFactory(EscolaFactory)
- rastro_lote = SubFactory(LoteFactory)
- rastro_terceirizada = SubFactory(EmpresaFactory)
- class DataIntervaloAlteracaoCardapioCEMEIFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
DataIntervaloAlteracaoCardapioCEMEI.Associa automaticamente uma
AlteracaoCardapioCEMEIvia subfactory.- alteracao_cardapio_cemei = SubFactory(AlteracaoCardapioCEMEIFactory)
- class FaixaEtariaSubstituicaoAlimentacaoCEMEICEIFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
FaixaEtariaSubstituicaoAlimentacaoCEMEICEI.Associa automaticamente uma substituição CEI e uma faixa etária via subfactories.
- faixa_etaria = SubFactory(FaixaEtariaFactory)
- substituicao_alimentacao = SubFactory(SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEIFactory)
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEIFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEICEI.Cria a instância com uma alteração CEMEI e um período escolar via subfactories. Suporta adição de tipos de alimentação de origem e destino via parâmetros
tipos_alimentacao_deetipos_alimentacao_para.- alteracao_cardapio = SubFactory(AlteracaoCardapioCEMEIFactory)
- periodo_escolar = SubFactory(PeriodoEscolarFactory)
- tipos_alimentacao_de = <factory.declarations.PostGeneration object>
- tipos_alimentacao_para = <factory.declarations.PostGeneration object>
- class SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEIFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
SubstituicaoAlimentacaoNoPeriodoEscolarCEMEIEMEI.Cria a instância com uma alteração CEMEI e um período escolar via subfactories. Suporta adição de tipos de alimentação de origem e destino via parâmetros
tipos_alimentacao_deetipos_alimentacao_para. Diferentemente do lado CEI, não possui faixas etárias aninhadas.- alteracao_cardapio = SubFactory(AlteracaoCardapioCEMEIFactory)
- periodo_escolar = SubFactory(PeriodoEscolarFactory)
- tipos_alimentacao_de = <factory.declarations.PostGeneration object>
- tipos_alimentacao_para = <factory.declarations.PostGeneration object>
managers
Managers customizados para o modelo AlteracaoCardapioCEMEI.
Cada manager aplica um filtro diferente sobre o queryset padrão, segmentando
as alterações de cardápio CEMEI por janela temporal. O filtro considera tanto
o campo alterar_dia (solicitação de dia único) quanto data_inicial
(solicitação por intervalo), pois o CEMEI suporta ambos os modos.
- class AlteracoesCardapioCEMEIDestaSemanaManager(*args, **kwargs)[source]
Bases:
ManagerManager que retorna alterações de cardápio CEMEI com data nos próximos 7 dias.
Considera tanto solicitações de dia único (
alterar_dia) quanto solicitações por intervalo (data_inicial).