inversao_dia_cardapio

admin

class InversaoCardapioModelAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin 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, TemTerceirizadaConferiuGestaoAlimentacao

Modelo 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.py

Descrição: Indica quais alunos da CEMEI são afetados no primeiro par de datas da inversão.

O campo permite blank e possui valor padrão "".

alunos_da_cemei_2: str

Origem: inversao_dia_cardapio/models.py

Descrição: Indica quais alunos da CEMEI são afetados no segundo par de datas da inversão, quando informado.

O campo permite blank e possui valor padrão "".

criado_em: datetime.datetime

Origem: dados_comuns/behaviors.py

Descrição: Timestamp preenchido automaticamente na criação do registro.

criado_por: perfil.Usuario | None

Origem: dados_comuns/behaviors.py

Descrição: Usuário responsável pela criação do registro. O campo ainda permite null e blank.

criado_por_id: int | None

Origem: dados_comuns/behaviors.py

Descrição: Identificador do usuário responsável pela criação do registro.

Corresponde à chave primária de perfil.Usuario. Pode ser None (campo permite null e blank).

data_de_inversao: datetime.date | None

Origem: inversao_dia_cardapio/models.py

Descrição: Primeira data de origem da inversão de cardápio.

Pode ser None (campo permite null e blank).

data_de_inversao_2: datetime.date | None

Origem: inversao_dia_cardapio/models.py

Descriçã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 permite null e blank).

data_para_inversao: datetime.date | None

Origem: inversao_dia_cardapio/models.py

Descrição: Primeira data de destino da inversão de cardápio.

Pode ser None (campo permite null e blank).

data_para_inversao_2: datetime.date | None

Origem: inversao_dia_cardapio/models.py

Descriçã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 permite null e blank).

desta_semana: inversao_dia_cardapio.managers.InversaoCardapioDestaSemanaManager

Origem: inversao_dia_cardapio/managers/inversao_dia_cardapio_managers.py

Descriçã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.py

Descriçã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.py

Descrição: Escola que efetuou a solicitação de inversão de dia de cardápio.

Pode ser None (campo permite null e blank).

escola_id: int | None

Origem: inversao_dia_cardapio/models.py

Descriçã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 ser None (campo permite null e blank).

foi_solicitado_fora_do_prazo: bool

Origem: dados_comuns/behaviors.py

Descriçã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.Model

Descrição: Identificador interno do registro no banco de dados.

Corresponde à chave primária gerada automaticamente pelo Django.

get_status_display()

Origem: django_xworkflows.models.StateField

Descrição: Relacionado ao campo status do workflow.

Retorna a representação legível (label) do status atual da instância.

O valor retornado corresponde ao texto definido em states do 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.py

Descriçã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.py

Descriçã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.Manager

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

observacao: str

Origem: dados_comuns/behaviors.py

Descriçã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: FluxoAprovacaoPartindoDaEscola

Descriçã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: FluxoAprovacaoPartindoDaEscola

Descrição: Identificador da DRE vinculada ao rastro histórico da solicitação.

Corresponde à chave primária de escola.DiretoriaRegional. Pode ser None (campo permite null e blank).

rastro_escola: escola.Escola | None

Origem: FluxoAprovacaoPartindoDaEscola

Descriçã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: FluxoAprovacaoPartindoDaEscola

Descrição: Identificador da escola registrada no rastro histórico da solicitação.

Corresponde à chave primária de escola.Escola. Pode ser None (campo permite null e blank).

rastro_lote: escola.Lote | None

Origem: FluxoAprovacaoPartindoDaEscola

Descriçã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: FluxoAprovacaoPartindoDaEscola

Descrição: Identificador do lote registrado no rastro histórico da solicitação.

Corresponde à chave primária de escola.Lote. Pode ser None (campo permite null e blank).

rastro_terceirizada: terceirizada.Terceirizada | None

Origem: FluxoAprovacaoPartindoDaEscola

Descriçã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: FluxoAprovacaoPartindoDaEscola

Descrição: Identificador da terceirizada registrada no rastro histórico da solicitação.

Corresponde à chave primária de terceirizada.Terceirizada. Pode ser None (campo permite null e blank).

status: str

Origem: django_xworkflows.models.StateField

Descrição: Estado atual da solicitação dentro do workflow de aprovação partindo da escola.

Armazena um dos valores definidos em PedidoAPartirDaEscolaWorkflow, como RASCUNHO, DRE_A_VALIDAR ou CODAE_AUTORIZADO.

terceirizada_conferiu_gestao: bool

Origem: dados_comuns/behaviors.py

Descriçã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.py

Descriçã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.py

Descriçã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.py

Descriçã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.

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_de e data_para.

Se apenas uma delas existir, retorna a data disponivel.

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 None quando

nao informada.

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 None quando

nao informada.

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/YYYY e, se

existir, a segunda data separada por <br />.

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.

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.

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_prazo com 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.

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.

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: ModelSerializer

Serializa 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: ModelSerializer

Serializa 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: ModelSerializer

Serializa 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 InversaoCardapio a 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:

InversaoCardapio

update(instance, validated_data)[source]

Atualiza uma InversaoCardapio convertendo 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:

InversaoCardapio

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 None quando 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 None quando 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:

True quando 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:

True quando 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, ModelViewSet

Gerencia 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 destroy base.

  • **kwargs – Argumentos nomeados repassados ao destroy base.

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: DjangoModelFactory

Factory 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: Manager

Manager que retorna inversões com datas previstas para os próximos 7 dias.

Considera tanto data_de_inversao quanto data_para_inversao e exige que ambas as datas da solicitação ainda não tenham passado.

get_queryset()[source]

Retorna o queryset filtrado pelo intervalo da semana atual.

Returns:

Inversoes com data_de_inversao ou data_para_inversao entre hoje e hoje + 7 dias.

Return type:

QuerySet

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

Bases: Manager

Manager que retorna inversões com datas previstas para os próximos 30 dias.

Considera tanto data_de_inversao quanto data_para_inversao e exige que ambas as datas da solicitação ainda não tenham passado.

get_queryset()[source]

Retorna o queryset filtrado pelo intervalo do mês atual.

Returns:

Inversões com data_de_inversao ou data_para_inversao entre hoje e hoje + 30 dias.

Return type:

QuerySet

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

Bases: Manager

Manager que retorna inversões vencidas ainda em status aberto.

Considera vencidas as solicitações cuja data de início ou fim já passou e que ainda estejam em status pendentes do fluxo da escola ou da DRE.

get_queryset()[source]

Retorna o queryset das inversões vencidas.

Returns:

Inversões com datas passadas e status ainda não finalizados.

Return type:

QuerySet