inversao_dia_cardapio
admin
- class InversaoCardapioModelAdmin(model, admin_site)[source]
Bases:
ModelAdminAdmin do Django para solicitacoes de inversao de cardapio.
Configura a listagem administrativa de
InversaoCardapio, exibindo as datas envolvidas na inversao, a escola relacionada, o status atual da solicitacao e os tipos de alimentacao vinculados. Tambem habilita filtros por intervalo de datas, status, lote e tipo de alimentacao, alem da busca textual por nome e codigo EOL da escola.- list_display
Colunas exibidas na listagem do admin. Valores:
("get_data_de", "get_data_para", "get_data_de_2", "get_data_para_2", "get_escola", "status", "get_tipos_alimentacao").- Type:
tuple[str, …]
- search_fields
Campos consultados pela busca textual do admin. Valores:
("rastro_escola__nome", "rastro_escola__codigo_eol", "escola__nome", "escola__codigo_eol").- Type:
tuple[str, …]
- search_help_text
Texto auxiliar exibido abaixo do campo de busca. Valores:
"Pesquisa por: nome da escola, codigo eol da escola".- Type:
str
- list_filter
Filtros laterais disponiveis na listagem. Valores:
(("data_de_inversao", DateRangeFilter), ("data_para_inversao", DateRangeFilter), "status", "rastro_lote", "tipos_alimentacao").- Type:
tuple[object, …]
Relacoes carregadas via join na listagem. Valores:
("escola", "rastro_escola", "rastro_lote").- Type:
tuple[str, …]
- get_data_de(obj)[source]
Retorna a primeira data de origem da inversao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Data de origem formatada para exibicao no admin.
- Return type:
str
- get_data_de_2(obj)[source]
Retorna a segunda data de origem da inversao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Segunda data de origem formatada para exibicao no admin.
- Return type:
str
- get_data_para(obj)[source]
Retorna a primeira data de destino da inversao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Data de destino formatada para exibicao no admin.
- Return type:
str
- get_data_para_2(obj)[source]
Retorna a segunda data de destino da inversao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Segunda data de destino formatada para exibicao no admin.
- Return type:
str
- get_escola(obj)[source]
Retorna a escola associada a solicitacao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Nome da escola vinculada, ou
"-"quando indisponivel.- Return type:
str
- get_queryset(request)[source]
Retorna a queryset otimizada para a listagem do admin.
- Parameters:
request (HttpRequest) – Requisicao atual do Django Admin.
- Returns:
- Queryset com os tipos de alimentacao
previamente carregados para evitar consultas extras.
- Return type:
django.db.models.QuerySet
- get_tipos_alimentacao(obj)[source]
Retorna os tipos de alimentacao vinculados a inversao.
- Parameters:
obj (InversaoCardapio) – Solicitacao exibida na linha atual.
- Returns:
Nomes dos tipos de alimentacao separados por virgula.
- Return type:
str
- list_display = ('get_data_de', 'get_data_para', 'get_data_de_2', 'get_data_para_2', 'get_escola', 'status', 'get_tipos_alimentacao')
- list_filter = (('data_de_inversao', <class 'rangefilter.filters.DateRangeFilter'>), ('data_para_inversao', <class 'rangefilter.filters.DateRangeFilter'>), 'status', 'rastro_lote', 'tipos_alimentacao')
- list_select_related = ('escola', 'rastro_escola', 'rastro_lote')
- property media
- search_fields = ('rastro_escola__nome', 'rastro_escola__codigo_eol', 'escola__nome', 'escola__codigo_eol')
- search_help_text = 'Pesquisa por: nome da escola, codigo eol da escola'
models
- class InversaoCardapio(*args, **kwargs)[source]
Bases:
ExportModelOperationsMixin('inversao_cardapio'),CriadoEm,CriadoPor,TemObservacao,Motivo,TemChaveExterna,TemIdentificadorExternoAmigavel,FluxoAprovacaoPartindoDaEscola,TemPrioridade,Logs,SolicitacaoForaDoPrazo,TemTerceirizadaConferiuGestaoAlimentacaoModelo responsável por armazenar Solicitações de Inversão do dia de Cardápio.
Esse modelo serve para todos os tipos de unidade escolar.
O objetivo da solicitação é inverter o cardápio disponibilizado no Prato Aberto sobre um tipo de alimentação em um dia específico.
- Por exemplo:
dia 15/03 será servido carne na Refeição.
dia 22/03 será servido peixe na Refeição.
caso exista uma Inversão de Cardápio solicitada para o dia 15/03 para o dia 22/03 de Refeição, o peixe será servido dia 15/03 e a carne será servida dia 22/03.
Para CEMEIs, é necessário informar se a substituição é para alunos CEI, EMEI ou para ambos.
- alunos_da_cemei: str
Origem:
inversao_dia_cardapio/models.pyDescrição: Indica quais alunos da CEMEI são afetados no primeiro par de datas da inversão.
O campo permite
blanke possui valor padrão"".
- alunos_da_cemei_2: str
Origem:
inversao_dia_cardapio/models.pyDescrição: Indica quais alunos da CEMEI são afetados no segundo par de datas da inversão, quando informado.
O campo permite
blanke possui valor padrão"".
- 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_de_inversao: datetime.date | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Primeira data de origem da inversão de cardápio.
Pode ser
None(campo permitenulleblank).
- data_de_inversao_2: datetime.date | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Segunda data de origem da inversão de cardápio, utilizada quando há um segundo par de datas na solicitação.
Pode ser
None(campo permitenulleblank).
- data_para_inversao: datetime.date | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Primeira data de destino da inversão de cardápio.
Pode ser
None(campo permitenulleblank).
- data_para_inversao_2: datetime.date | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Segunda data de destino da inversão de cardápio, utilizada quando há um segundo par de datas na solicitação.
Pode ser
None(campo permitenulleblank).
- desta_semana: inversao_dia_cardapio.managers.InversaoCardapioDestaSemanaManager
Origem:
inversao_dia_cardapio/managers/inversao_dia_cardapio_managers.pyDescrição: Manager customizado para consultar solicitações com datas previstas para os próximos 7 dias.
- deste_mes: inversao_dia_cardapio.managers.InversaoCardapioDesteMesManager
Origem:
inversao_dia_cardapio/managers/inversao_dia_cardapio_managers.pyDescrição: Manager customizado para consultar solicitações com datas previstas para os próximos 30 dias.
- escola: escola.Escola | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Escola que efetuou a solicitação de inversão de dia de cardápio.
Pode ser
None(campo permitenulleblank).
- escola_id: int | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Identificador da escola que efetuou a solicitação de inversão de dia de cardápio.
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.
- 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
- motivo: str
Origem:
dados_comuns/behaviors.pyDescrição: Campo textual que descreve o motivo da solicitação de inversão de cardápio.
Pode ser uma string vazia, pois o campo permite
blank.
- motivo_id: int | None
Origem:
inversao_dia_cardapio/models.pyDescrição: Não se aplica ao modelo atual de Inversão de Cardápio, pois
motivoé um campo textual e não uma chave estrangeira.Mantido na documentação para compatibilidade com outros modelos de solicitação que utilizam
motivo_id.
- objects: django.db.models.manager.Manager[InversaoCardapio]
Origem:
django.db.models.ManagerDescrição: Manager padrão do modelo, usado para consultas como
all(),filter()eget().
- 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.
- 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.
- tipos_alimentacao: django.db.models.QuerySet[TipoAlimentacao]
Origem:
inversao_dia_cardapio/models.pyDescrição: Relação M:N com os tipos de alimentação aos quais a inversão se aplica.
Pode estar vazia quando a solicitação ainda não tiver tipos vinculados.
- 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.
- vencidos: inversao_dia_cardapio.managers.InversaoCardapioVencidaManager
Origem:
inversao_dia_cardapio/managers/inversao_dia_cardapio_managers.pyDescrição: Manager customizado para consultar solicitações vencidas que ainda estão em status abertos do workflow.
- DESCRICAO = 'Inversão de Cardápio'
- 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 menor data relevante entre a primeira e a segunda data da inversao.
- Returns:
- Menor data entre
data_deedata_para. Se apenas uma delas existir, retorna a data disponivel.
- Menor data entre
- Return type:
datetime.date | None
- property data_de
Retorna a primeira data para a troca de cardápio da inversao do cardápio.
- Returns:
- Data de origem principal, ou
Nonequando nao informada.
- Data de origem principal, ou
- Return type:
datetime.date | None
- property data_para
Retorna a segunda data para a troca de cardápio da inversao do cardápio.
- Returns:
- Data de destino principal, ou
Nonequando nao informada.
- Data de destino principal, ou
- Return type:
datetime.date | None
- property datas
Retorna as datas de origem formatadas para exibicao em relatorios.
Quando a solicitacao possui um segundo par de datas, a segunda data de origem e concatenada com quebra de linha em HTML.
- Returns:
- String com a primeira data formatada em
dd/mm/YYYYe, se existir, a segunda data separada por
<br />.
- String com a primeira data formatada em
- 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.
- classmethod get_solicitacoes_rascunho(usuario)[source]
Retorna as solicitacoes de inversao com status RASCUNHO de um usuario.
- Parameters:
usuario (django.contrib.auth.models.AbstractUser) – Usuario autor das solicitacoes.
- Returns:
- Queryset contendo as solicitacoes da
classe com status de rascunho criadas pelo usuario informado.
- Return type:
django.db.models.QuerySet
- 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 associado a solicitação.
Neste tipo de solicitação não há consolidação de quantidade de alunos, por isso o valor retornado é sempre vazio.
Necessário para integração da Inversão de Dia de Cardápio com o paineis_consolidados, que agrupa todos os tipos de solicitação.
- Returns:
String vazia.
- Return type:
str
- property path
Retorna o caminho relativo do relatorio desta solicitação no frontend.
- Returns:
- URL relativa do frontend para a tela de relatorio da
solicitacao.
- Return type:
str
- salvar_log_transicao(status_evento, usuario, **kwargs)[source]
Registra no log a transicao de status da solicitacao.
- Parameters:
status_evento (int) – Codigo do evento de status que sera registrado.
usuario (django.contrib.auth.models.AbstractUser) – Usuario responsavel pela transicao.
**kwargs –
Parametros opcionais do log. justificativa (str): Texto justificando a transicao. resposta_sim_nao (bool): Resposta booleana associada ao
evento, quando existir.
- Returns:
O metodo apenas persiste o log da transicao.
- Return type:
None
- solicitacao_dict_para_relatorio(label_data, data_log, instituicao)[source]
Monta o dicionário usado na geração do relatório da solicitação.
- Parameters:
label_data (str) – rótulo textual da data exibida no relatório.
data_log (str) – Data ou descrição temporal associada ao log do relatório.
instituicao (object) – Instituição solicitante. Mantido por compatibilidade de interface, sem uso direto no método.
- Returns:
- Dicionário com os dados consolidados da
solicitação para renderização em relatórios.
- Return type:
dict[str, object]
- 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 solicitacao.
- Returns:
String
"Inversão de Dia de Cardápio".- Return type:
str
api
Camada de API para solicitacoes de inversao de dia de cardapio.
serializers
Serializers de leitura da API de inversao de dia de cardapio.
- class InversaoCardapioSerializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializa a representação detalhada de uma Inversao de dia de Cardápio.
Inclui dados da escola, terceirizada, logs da solicitação e os tipos de alimentação associados à inversão.
- class Meta[source]
Bases:
object- exclude = ('id', 'criado_por')
- model
alias of
InversaoCardapio
- class InversaoCardapioSimpleserializer(*args, **kwargs)[source]
Bases:
ModelSerializerSerializa uma visão resumida de uma inversão de cardápio.
Exibe os campos essenciais para listagens em que não é necessário carregar toda a estrutura detalhada da solicitação.
- class Meta[source]
Bases:
object- exclude = ('id', 'criado_por')
- model
alias of
InversaoCardapio
serializers_create
Serializer de escrita da API de inversao de dia de cardapio.
- class InversaoCardapioSerializerCreate(*args, **kwargs)[source]
Bases:
ModelSerializerSerializa a criação e a atualização de
InversaoCardapio.Recebe as datas expostas pela API, aplica validações de negócio e converte os campos para a estrutura persistida no modelo.
- class Meta[source]
Bases:
object- fields = ('uuid', 'motivo', 'observacao', 'data_de', 'data_para', 'tipos_alimentacao', 'data_de_2', 'data_para_2', 'escola', 'status_explicacao', 'alunos_da_cemei', 'alunos_da_cemei_2')
- model
alias of
InversaoCardapio
- create(validated_data)[source]
Cria uma
InversaoCardapioa partir dos campos expostos pela API.- Parameters:
validated_data (dict) – Dados da solicitação após as validações do serializer.
- Returns:
Instância criada com os tipos de alimentação associados.
- Return type:
- update(instance, validated_data)[source]
Atualiza uma
InversaoCardapioconvertendo os campos da API.- Parameters:
instance (InversaoCardapio) – Instância persistida a ser atualizada.
validated_data (dict) – Dados validados enviados na requisição.
- Returns:
Instância atualizada.
- Return type:
- validate(attrs)[source]
Aplica as validações de negócio da solicitação de inversão.
as datas devem ser do mesmo ano corrente ou do próximo ano quando a solicitação for feita no mês de dezembro;
não pode existir outra solicitação de inversão para a mesma escola, tipos de alimentação e datas, que esteja em aberto;
a diferença entre as datas de origem e destino da inversão não pode ser superior a 60 dias;
as datas informadas devem ser dias letivos e dias da semana válidos para a escola.
- Parameters:
attrs (dict) – Dados normalizados pelo serializer antes da persistência.
- Returns:
O dicionário de atributos validado.
- Return type:
dict
- validate_data_de(data_de)[source]
Valida se a data inicial da primeira inversão não está no passado.
- Parameters:
data_de (datetime.date) – Data inicial informada na solicitação.
- Returns:
A mesma data validada.
- Return type:
datetime.date
- validate_data_de_2(data_de_2)[source]
Valida a segunda data inicial quando uma segunda inversão é enviada; não pode ser no passado.
- Parameters:
data_de_2 (datetime.date | None) – Segunda data inicial da solicitação.
- Returns:
A data validada ou
Nonequando ausente.- Return type:
datetime.date | None
- validate_data_para(data_para)[source]
Valida se a data final da primeira inversão não está no passado.
- Parameters:
data_para (datetime.date) – Data final informada na solicitação.
- Returns:
A mesma data validada.
- Return type:
datetime.date
- validate_data_para_2(data_para_2)[source]
Valida a segunda data final quando uma segunda inversão é enviada; não pode ser no passado.
- Parameters:
data_para_2 (datetime.date | None) – Segunda data final da solicitação.
- Returns:
A data validada ou
Nonequando ausente.- Return type:
datetime.date | None
validators
Validadores de negócio da API de Inversão de dia de Cardápio.
- nao_pode_existir_solicitacao_igual_para_mesma_escola(data_de, data_para, escola, tipos_alimentacao)[source]
Impede a criação de solicitações duplicadas para a mesma escola.
Considera tanto o primeiro quanto o segundo par de datas da solicitação e ignora pedidos em status finais que não bloqueiam nova criação.
- Parameters:
data_de (datetime.date) – Data inicial da inversão.
data_para (datetime.date) – Data final da inversão.
escola (Escola) – Escola associada ao pedido.
tipos_alimentacao (list) – Tipos de alimentação vinculados ao pedido.
- Returns:
Truequando não existe solicitação equivalente em aberto.- Return type:
bool
- Raises:
ValidationError – Quando já existe uma solicitação com os mesmos dados.
- nao_pode_ter_mais_que_60_dias_diferenca(data_de, data_para)[source]
Valida o limite máximo de diferença entre as datas da inversão, que é de 60 dias.
- Parameters:
data_de (datetime.date) – Data inicial da inversão.
data_para (datetime.date) – Data final da inversão.
- Returns:
Truequando a diferença entre as datas é de até 60 dias.- Return type:
bool
- Raises:
ValidationError – Quando a diferença absoluta entre as datas ultrapassa 60 dias.
viewsets
ViewSet da API de solicitações de Inversão de dia de cardápio.
- class InversaoCardapioViewSet(**kwargs)[source]
Bases:
DataSolicitacaoContextMixin,ModelViewSetGerencia o CRUD e o fluxo de aprovação de
InversaoCardapio.Exponibiliza endpoints de listagem por perfil, transições de workflow, geração de relatório e marcação de conferência para solicitações de inversão de cardápio.
- codae_autoriza_solicitacao(request, uuid=None)[source]
Autoriza a solicitação na CODAE ou no fluxo de questionamento.
- Parameters:
request (Request) – Requisição HTTP contendo justificativa opcional.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- codae_nega_solicitacao(request, uuid=None)[source]
Nega a solicitação na CODAE ou no fluxo de questionamento.
- Parameters:
request (Request) – Requisição HTTP contendo justificativa opcional.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- codae_questiona(request, uuid=None)[source]
Registra um questionamento da CODAE para a solicitação.
- Parameters:
request (Request) – Requisição HTTP contendo a observação do questionamento.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- destroy(request, *args, **kwargs)[source]
Exclui a solicitação apenas quando ela ainda está em rascunho.
- Parameters:
request (Request) – Requisição HTTP da operação de exclusão.
*args – Argumentos posicionais repassados ao
destroybase.**kwargs – Argumentos nomeados repassados ao
destroybase.
- Returns:
Resultado da exclusão ou mensagem de permissão negada.
- Return type:
Response
- diretoria_regional_nao_valida_solicitacao(request, uuid=None)[source]
Não valida a solicitação pela DRE com justificativa opcional.
- Parameters:
request (Request) – Requisição HTTP contendo a justificativa.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- diretoria_regional_valida_solicitacao(request, uuid=None)[source]
Executa a validação da solicitação pela DRE.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- escola_cancela_solicitacao(request, uuid=None)[source]
Cancela a solicitação pela escola com justificativa opcional.
- Parameters:
request (Request) – Requisição HTTP contendo justificativa opcional.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- get_permissions()[source]
Define as permissões dinamicamente conforme a action executada.
- Returns:
Instâncias de permissão aplicáveis à requisição atual.
- Return type:
list
- get_serializer_class()[source]
Retorna o serializer adequado para leitura ou escrita.
- Returns:
Classe de serializer associada à action atual.
- Return type:
type
- inicio_de_solicitacao(request, uuid=None)[source]
Inicia o fluxo da solicitação a partir da escola.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- lookup_field = 'uuid'
- minhas_solicitacoes(request)[source]
Lista as solicitações em rascunho do usuário escola terceirizada autenticado.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
- Returns:
Resposta paginada com os rascunhos do usuário.
- Return type:
Response
- permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>,)
- queryset = <QuerySet de InversaoCardapio>
- relatorio(request, uuid=None)[source]
Gera o relatório PDF da solicitação de Inversão de dia de Cardápio.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
uuid (str | None) – Identificador da solicitação.
- Returns:
Arquivo PDF gerado para a solicitação.
- Return type:
HttpResponse
- serializer_class
alias of
InversaoCardapioSerializer
- solicitacoes_codae(request, filtro_aplicado='sem_filtro')[source]
Lista as solicitações visíveis para a CODAE autenticada.
Permite filtros opcionais por diretoria regional e lote via query params.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
filtro_aplicado (str) – Filtro de status a ser aplicado.
- Returns:
Lista serializada das solicitações encontradas.
- Return type:
Response
- solicitacoes_diretoria_regional(request, filtro_aplicado='sem_filtro')[source]
Lista as solicitações visíveis para a DRE autenticada.
Permite filtro adicional por lote via query param.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
filtro_aplicado (str) – Filtro de status a ser aplicado.
- Returns:
Lista serializada das solicitações encontradas.
- Return type:
Response
- solicitacoes_terceirizada(request, filtro_aplicado='sem_filtro')[source]
Lista as solicitações visíveis para a terceirizada autenticada.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
filtro_aplicado (str) – Filtro de status a ser aplicado.
- Returns:
Resposta paginada com as solicitações da terceirizada.
- Return type:
Response
- terceirizada_marca_inclusao_como_conferida(request, uuid=None)[source]
Marca a solicitação como conferida pela terceirizada.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou mensagem de erro.
- Return type:
Response
- terceirizada_responde_questionamento(request, uuid=None)[source]
Registra a resposta da terceirizada a um questionamento da CODAE.
- Parameters:
request (Request) – Requisição HTTP contendo justificativa e resposta.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
- terceirizada_toma_ciencia(request, uuid=None)[source]
Registra a tomada de ciência da terceirizada sobre a solicitação.
- Parameters:
request (Request) – Requisição HTTP com o usuário autenticado.
uuid (str | None) – Identificador da solicitação.
- Returns:
Solicitação atualizada ou erro de transição inválida.
- Return type:
Response
fixtures
fixtures/factories
Factories de teste para o subapp de inversao de dia de cardapio.
Factories para o modelo InversaoCardapio.
Utiliza factory_boy para criar instancias de teste com os relacionamentos
necessarios para o fluxo de inversao de dia de cardapio.
- class InversaoCardapioFactory(**kwargs)[source]
Bases:
DjangoModelFactoryFactory para o modelo
InversaoCardapio.Cria automaticamente a escola solicitante e os campos de rastreio (escola, lote, DRE e terceirizada) por meio de subfactories.
- escola = SubFactory(EscolaFactory)
- rastro_dre = SubFactory(DiretoriaRegionalFactory)
- rastro_escola = SubFactory(EscolaFactory)
- rastro_lote = SubFactory(LoteFactory)
- rastro_terceirizada = SubFactory(EmpresaFactory)
- tipos_alimentacao = <factory.declarations.PostGeneration object>
managers
Managers customizados para consultas do subapp de inversao de cardapio.
Managers customizados para o modelo InversaoCardapio.
Cada manager aplica um recorte temporal ou de status sobre o queryset padrao, facilitando consultas de solicitacoes proximas, do mes e vencidas.
- class InversaoCardapioDestaSemanaManager(*args, **kwargs)[source]
Bases:
ManagerManager que retorna inversões com datas previstas para os próximos 7 dias.
Considera tanto
data_de_inversaoquantodata_para_inversaoe exige que ambas as datas da solicitação ainda não tenham passado.
- class InversaoCardapioDesteMesManager(*args, **kwargs)[source]
Bases:
ManagerManager que retorna inversões com datas previstas para os próximos 30 dias.
Considera tanto
data_de_inversaoquantodata_para_inversaoe exige que ambas as datas da solicitação ainda não tenham passado.