suspensao_alimentacao

admin

class GrupoSuspensaoAlimentacaoModelAdmin(model, admin_site)[source]

Bases: ModelAdmin

Admin do Django para solicitações de suspensão de alimentação.

Configura a listagem administrativa de GrupoSuspensaoAlimentacao, com inlines para gerenciar as datas de suspensão e as quantidades por período escolar associadas à solicitação.

inlines = [<class 'src.cardapio.suspensao_alimentacao.admin.SuspensaoAlimentacaoInline'>, <class 'src.cardapio.suspensao_alimentacao.admin.QuantidadePorPeriodoSuspensaoAlimentacaoInline'>]
property media
class QuantidadePorPeriodoSuspensaoAlimentacaoInline(parent_model, admin_site)[source]

Bases: TabularInline

Inline para gerenciar QuantidadePorPeriodoSuspensaoAlimentacao.

Permite adicionar e editar as quantidades de alunos por período escolar diretamente no formulário de administração da solicitação.

extra = 1
property media
model

alias of QuantidadePorPeriodoSuspensaoAlimentacao

class SuspensaoAlimentacaoInline(parent_model, admin_site)[source]

Bases: TabularInline

Inline para gerenciar SuspensaoAlimentacao vinculadas ao grupo.

Permite adicionar e editar as datas de suspensão diretamente no formulário de administração da solicitação de suspensão de alimentação.

extra = 1
property media
model

alias of SuspensaoAlimentacao

models

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

Bases: ExportModelOperationsMixin('grupo_suspensao_alimentacao'), TemChaveExterna, CriadoPor, TemIdentificadorExternoAmigavel, CriadoEm, TemObservacao, FluxoInformativoPartindoDaEscola, Logs, TemPrioridade, TemTerceirizadaConferiuGestaoAlimentacao

Solicitação de Suspensão de Alimentação.

Objetivo: informar à empresa que atende a unidade educacional que um dia previamente letivo não haverá aula por força maior.

Motivos mais comuns:
  • Unidade sem atendimento

  • Parada Pedagógica

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).

desta_semana: GrupoSuspensaoAlimentacaoDestaSemanaManager

Origem: suspensao_alimentacao/managers/suspensao_alimentacao_managers.py

Descrição: Manager que filtra apenas as solicitações de suspensão de alimentação da semana corrente.

Retorna as solicitações cuja data de suspensão está dentro do intervalo da semana atual.

deste_mes: GrupoSuspensaoAlimentacaoDesteMesManager

Origem: suspensao_alimentacao/managers/suspensao_alimentacao_managers.py

Descrição: Manager que filtra apenas as solicitações de suspensão de alimentação do mês corrente.

Retorna as solicitações cuja data de suspensão está dentro do mês atual.

escola: escola.Escola | None

Origem: django.db.models.ForeignKey

Descrição: Escola que efetuou a solicitação de suspensão de alimentação.

escola_id: int | None

Origem: django.db.models.ForeignKey

Descrição: Identificador da escola que efetuou a solicitação de suspensão de alimentação.

Corresponde à chave primária de escola.Escola. Pode ser None.

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.

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.

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

Relação reversa 1:N com QuantidadePorPeriodoSuspensaoAlimentacao.

Representa os períodos escolares da solicitação com suas respectivas quantidades de alunos e tipos de alimentação suspensos.

rastro_dre: escola.DiretoriaRegional | None

Origem: FluxoInformativoPartindoDaEscola

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

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

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

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

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

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

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

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 informativo partindo da escola.

Armazena um dos valores definidos em InformativoPartindoDaEscolaWorkflow, como RASCUNHO, INFORMADO, TERCEIRIZADA_TOMOU_CIENCIA ou ESCOLA_CANCELOU.

suspensoes_alimentacao: django.db.models.QuerySet[SuspensaoAlimentacao]

Relação reversa 1:N com SuspensaoAlimentacao.

Representa todas as datas de suspensão associadas à solicitação, cada uma com seu respectivo motivo.

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.

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

Exemplo: INFORMADO.

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.

Pode ser utilizado em integrações externas e URLs públicas, evitando a exposição do identificador interno (ID).

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

property data

Retorna a primeira data da suspensão ordenada cronologicamente.

Returns:

Data da primeira suspensão.

Return type:

datetime.date

property datas

Retorna as datas de suspensão formatadas para exibição em relatórios.

As datas são ordenadas cronologicamente e exibidas no formato dd/mm/YYYY, separadas por vírgula.

Returns:

String com as datas formatadas e separadas por ", ".

Return type:

str

escola_cancela

A unidade educacional cancela a suspensão de alimentação; ou seja, vai ter aula normal e precisa do fornecimento de alimentação da empresa.

Necessário informar até 48h úteis previamente à data de suspensão.

Este método é herdado de django_xworkflows.

Possui um hook (_escola_cancela_hook) para, após a resposta:
  • criar uma entrada de log específico para esta ação, utilizando o método salvar_log_transicao.

property existe_dia_cancelado

Verifica se a solicitação possui algum dia de suspensão cancelado.

Returns:

True se houver ao menos uma suspensão cancelada,

False caso contrário.

Return type:

bool

classmethod get_informados()[source]

Retorna as solicitações de suspensão com status INFORMADO.

Returns:

Queryset contendo as solicitações da

classe com status de informado.

Return type:

django.db.models.QuerySet

classmethod get_rascunhos_do_usuario(usuario)[source]

Retorna as solicitações de suspensão com status RASCUNHO de um usuário.

Parameters:

usuario (django.contrib.auth.models.AbstractUser) – Usuário autor das solicitações.

Returns:

Queryset contendo as solicitações da

classe com status de rascunho criadas pelo usuário informado.

Return type:

django.db.models.QuerySet

classmethod get_tomados_ciencia()[source]

Retorna as solicitações de suspensão com status TERCEIRIZADA_TOMOU_CIENCIA.

Returns:

Queryset contendo as solicitações da

classe com status de terceirizada tomou ciência.

Return type:

django.db.models.QuerySet

informa

A unidade educacional informa à empresa que não haverá expediente no dia de suspensão, não sendo necessária a disponibilização de alimentações para os alunos.

Único fluxo que não precisa de validação da DRE nem autorização da CODAE, é apenas informativo.

Mesmo sem precisar de autorização da CODAE, ainda é preciso ser informado 48h úteis antes por questões contratuais.

Este método é herdado de django_xworkflows.

Possui um hook (_informa_hook) para, após a resposta:
  • 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.

property numero_alunos

Retorna o total de alunos sem alimentação na solicitação.

Soma as quantidades de todos os períodos escolares associados.

Returns:

Número total de alunos sem alimentação.

Return type:

int

property path

Retorna o caminho relativo do relatório desta solicitação no frontend.

Returns:

URL relativa do frontend para a tela de relatório da

solicitação de suspensão.

Return type:

str

salvar_log_transicao(status_evento, usuario, **kwargs)[source]

Registra no log a transição de status da solicitação.

Cria uma entrada em LogSolicitacoesUsuario associada a esta solicitação de suspensão de alimentação.

Parameters:
  • status_evento (int) – Código do evento de status que será registrado.

  • 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.

Returns:

O método apenas persiste o log da transição.

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 (datetime.date) – Data do log de referência exibida no relatório.

  • instituicao (object) – Instituição solicitante. Mantido por compatibilidade de interface, sem uso direto no método.

Returns:

Dicionário com os campos utilizados no relatório.

Return type:

dict

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 textual do tipo da solicitação.

Returns:

String "Suspensão de Alimentação".

Return type:

str

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

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

Motivo de Suspensão de um dia letivo em uma unidade educacional.

Exemplos:
  • Unidade sem atendimento

  • Parada Pedagógica

  • Outro

nome: str

Origem: dados_comuns/behaviors.py

Descrição: Nome do motivo de suspensão de alimentação.

Exemplos:
  • Unidade sem atendimento

  • Parada Pedagógica

suspensaoalimentacao_set: django.db.models.QuerySet[SuspensaoAlimentacao]

Relação reversa 1:N com SuspensaoAlimentacao.

Representa todas as datas de suspensão que utilizam este motivo.

suspensaoalimentacaodacei_set: django.db.models.QuerySet[SuspensaoAlimentacaoDaCEI]

Relação reversa 1:N com SuspensaoAlimentacaoDaCEI.

Representa todas as datas de suspensão de CEI que utilizam este motivo.

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.

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.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

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

Bases: ExportModelOperationsMixin('suspensao_alimentacao'), TemData, TemChaveExterna, CanceladoIndividualmente

Tabela auxiliar de uma Solicitação de Suspensão de Alimentação.

Uma Solicitação de Suspensão de Alimentação pode ter N datas.

Cada linha da tabela armazena um par data/motivo da solicitação.

data: datetime.date

Origem: dados_comuns/behaviors.py

Descrição: Data da suspensão de alimentação.

Representa o dia letivo em que não haverá aula na unidade educacional.

motivo: cardapio.MotivoSuspensao

Origem: django.db.models.ForeignKey

Descrição: Motivo da suspensão de alimentação associado a esta data.

Motivos disponíveis:
  • Unidade sem atendimento

  • Parada Pedagógica

motivo_id: int

Origem: django.db.models.ForeignKey

Descrição: Identificador do motivo de suspensão associado a esta data.

Corresponde à chave primária de MotivoSuspensao.

prioritario: bool

Origem: django.db.models.BooleanField

Descrição: Indica se esta suspensão é considerada prioritária.

Por padrão, é False.

outro_motivo: str

Origem: django.db.models.CharField

Descrição: Campo de texto livre para registrar um motivo alternativo, quando o motivo principal for “Outro”.

Pode ser uma string vazia, pois o campo permite blank.

get_alunos_cei_ou_emei_display()

Origem: django.db.models.CharField

Descrição: Relacionado ao campo alunos_cei_ou_emei.

Retorna a representação legível (label) do valor do campo alunos_cei_ou_emei.

O valor retornado corresponde ao texto definido em CEI_OU_EMEI_CHOICES, sendo mais apropriado para exibição em interfaces (ex: telas e relatórios).

Returns:

Texto legível da opção CEI/EMEI

Return type:

str

Opções: "Todos", "CEI" ou "EMEI".

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.

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.

cancelado: bool

Origem: dados_comuns/behaviors.py

Descrição: Indica se esta data específica de suspensão foi cancelada individualmente.

Quando True, a solicitação principal continua existindo, mas este dia deixa de valer.

cancelado_em: datetime.datetime | None

Origem: dados_comuns/behaviors.py

Descrição: Data e hora em que o cancelamento individual desta data foi registrado.

Pode ser None quando a data ainda não foi cancelada.

cancelado_justificativa: str

Origem: dados_comuns/behaviors.py

Descrição: Justificativa informada para o cancelamento individual desta data.

Permanece vazio quando não houver cancelamento ou quando nenhuma justificativa tiver sido registrada.

cancelado_por: perfil.Usuario | None

Origem: dados_comuns/behaviors.py

Descrição: Usuário responsável por cancelar individualmente esta data de suspensão.

Pode ser None quando o cancelamento não foi realizado.

cancelado_por_id: int | None

Origem: django.db.models.ForeignKey

Descrição: Identificador do usuário responsável pelo cancelamento individual desta data.

Corresponde à chave primária de perfil.Usuario. Pode ser None quando não houver usuário associado ao cancelamento.

exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

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

Bases: ExportModelOperationsMixin('quantidade_periodo'), TemChaveExterna

Tabela auxiliar de uma Solicitação de Suspensão de Alimentação.

Uma Solicitação de Suspensão de Alimentação pode ter N períodos escolares.

Cada linha da tabela armazena um período escolar da UE, a quantidade de alunos sem alimentação e os tipos de alimentação que estão suspensos.

Normalmente, em uma solicitação são escolhidos todos os períodos escolares, todos os tipos de alimentação e todos os alunos matriculados, dado que, normalmente, é um dia sem aula na unidade inteira.

O campo CEI_OU_EMEI_CHOICES é necessário apenas para solicitações de unidades educacionais com tipo de unidade escolar CEMEI/CEU CEMEI.
  • nele, armazenamos se a suspensão é destinada aos alunos CEI, EMEI ou ambos.

numero_alunos: int

Origem: django.db.models.SmallIntegerField

Descrição: Quantidade de alunos sem alimentação neste período escolar da solicitação.

periodo_escolar: escola.PeriodoEscolar

Origem: django.db.models.ForeignKey

Descrição: Período escolar ao qual esta quantidade de alunos se aplica.

Exemplo: manhã, tarde, noite ou integral, conforme os períodos cadastrados para a unidade.

periodo_escolar_id: int

Origem: django.db.models.ForeignKey

Descrição: Identificador do período escolar ao qual esta quantidade se aplica.

Corresponde à chave primária de escola.PeriodoEscolar.

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

Origem: django.db.models.ManyToManyField

Descrição: Conjunto de tipos de alimentação que estão suspensos neste período escolar.

Trata-se de uma relação muitos-para-muitos com TipoAlimentacao.

alunos_cei_ou_emei: str

Origem: django.db.models.CharField

Descrição: Indica a qual grupo de alunos se destina a suspensão, quando a unidade escolar for do tipo CEMEI ou CEU CEMEI.

Opções disponíveis:
  • TODOS: ambos CEI e EMEI

  • CEI: apenas alunos CEI

  • EMEI: apenas alunos EMEI

Pode ser uma string vazia, pois o campo permite blank.

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.

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.

CEI_OU_EMEI_CHOICES = [('TODOS', 'Todos'), ('CEI', 'CEI'), ('EMEI', 'EMEI')]
exception NotUpdated

Bases: ObjectNotUpdated, DatabaseError

get_alunos_cei_ou_emei_display(*, field=<django.db.models.fields.CharField: alunos_cei_ou_emei>)

api

serializers

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

Bases: ModelSerializer

Serializa uma visão enxuta da suspensão para listagens.

Retorna apenas os campos essenciais para listagens de solicitações informadas e rascunhos, incluindo UUID, id externo, status, prioridade e escola.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso direto nas actions informadas.

class Meta[source]

Bases: object

fields = ('uuid', 'id_externo', 'status', 'prioridade', 'criado_em', 'escola')
model

alias of GrupoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa a representação detalhada de uma suspensão de alimentação.

Inclui escola, quantidades por período, datas de suspensão, logs e rastro da terceirizada usados nas respostas completas da API.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: retornado por get_serializer_class() em todas as ações de leitura e nas actions customizadas que respondem com o objeto serializado, exceto create, update e partial_update.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of GrupoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa uma visão resumida da suspensão de alimentação.

Remove campos mais pesados e relacionamentos aninhados para atender listagens que precisam de um payload menor.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso direto nas actions solicitacoes_codae e solicitacoes_terceirizada.

class Meta[source]

Bases: object

exclude = ('id', 'criado_por', 'escola')
model

alias of GrupoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa os motivos de suspensão de alimentação.

Expoe os campos públicos de MotivoSuspensao usados para listar e embutir o motivo selecionado em respostas de solicitações.

Viewsets que utilizam este serializer:
  • MotivosSuspensaoCardapioViewSet: uso direto como serializer_class nas ações list e retrieve.

  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso indireto, aninhado nos serializers de leitura e criação.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of MotivoSuspensao

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

Bases: ModelSerializer

Serializa a quantidade de alunos por período escolar.

Inclui o período escolar e os tipos de alimentação aninhados para representar cada item da lista quantidades_por_periodo da suspensão.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso indireto, aninhado em GrupoSuspensaoAlimentacaoSerializer nas respostas de leitura.

class Meta[source]

Bases: object

exclude = ('id', 'grupo_suspensao')
model

alias of QuantidadePorPeriodoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa a representação completa de uma suspensão de CEI.

Inclui escola, motivo, períodos escolares, logs e rastro da terceirizada usados nas respostas detalhadas da API de suspensão de alimentação CEI.

Viewsets que utilizam este serializer:
  • SuspensaoAlimentacaoDaCEIViewSet: uso direto nas respostas de leitura da API de suspensão de alimentação CEI.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of SuspensaoAlimentacaoDaCEI

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

Bases: ModelSerializer

Serializa uma data de suspensão de alimentação.

Inclui o motivo aninhado para representar cada item da lista suspensoes_alimentacao da solicitação.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso indireto, aninhado em GrupoSuspensaoAlimentacaoSerializer nas respostas de leitura.

class Meta[source]

Bases: object

exclude = ('id', 'grupo_suspensao')
model

alias of SuspensaoAlimentacao

serializers_create

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

Bases: ModelSerializer

Serializa a criação e atualização de suspensões de alimentação.

Resolve referências por UUID para a escola e recebe listas aninhadas de quantidades_por_periodo e suspensoes_alimentacao. No create, persiste o grupo e seus relacionamentos; no update, remove e recria os itens vinculados.

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

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of GrupoSuspensaoAlimentacao

create(validated_data)[source]

Cria uma solicitação de suspensão com quantidades e datas.

Parameters:

validated_data (dict) – Dados validados da solicitação, incluindo listas aninhadas de quantidades_por_periodo e suspensoes_alimentacao.

Returns:

Instância criada com seus relacionamentos vinculados.

Return type:

GrupoSuspensaoAlimentacao

update(instance, validated_data)[source]

Atualiza uma solicitação de suspensão recriando seus itens.

Parameters:
  • instance (GrupoSuspensaoAlimentacao) – Instância existente a ser atualizada.

  • validated_data (dict) – Dados validados da requisição.

Returns:

Instância atualizada com seus relacionamentos recriados.

Return type:

GrupoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa a criação de uma quantidade de alunos por período escolar.

Recebe referências por UUID para o período escolar e tipos de alimentação associados.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso indireto, aninhado em GrupoSuspensaoAlimentacaoCreateSerializer nas actions create, update e partial_update.

class Meta[source]

Bases: object

exclude = ('id', 'grupo_suspensao')
model

alias of QuantidadePorPeriodoSuspensaoAlimentacao

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

Bases: ModelSerializer

Serializa a criação de uma data de suspensão de alimentação.

Recebe a referência do motivo por UUID e valida que a data não seja no passado e pertença ao ano corrente.

Viewsets que utilizam este serializer:
  • GrupoSuspensaoAlimentacaoSerializerViewSet: uso indireto, aninhado em GrupoSuspensaoAlimentacaoCreateSerializer nas actions create, update e partial_update.

class Meta[source]

Bases: object

exclude = ('id',)
model

alias of SuspensaoAlimentacao

validate_data(data)[source]

Valida que a data da suspensão atende às regras de negócio.

A data não pode ser no passado e deve pertencer ao ano corrente.

Parameters:

data (datetime.date) – Data da suspensão a ser validada.

Returns:

A mesma data, após passar pelas validações.

Return type:

datetime.date

viewsets

class GrupoSuspensaoAlimentacaoSerializerViewSet(**kwargs)[source]

Bases: DataSolicitacaoContextMixin, ModelViewSet

Viewset para gerenciamento de solicitações de suspensão de alimentação.

Gerencia o ciclo de vida completo das solicitações de suspensão de alimentação: criação, leitura, atualização, exclusão e ações do fluxo informativo partindo da escola.

Actions de fluxo disponíveis:
  • informa_suspensao: Escola informa a suspensão (RASCUNHO → INFORMADO).

  • terceirizada_toma_ciencia: Terceirizada toma ciência (INFORMADO → TERCEIRIZADA_TOMOU_CIENCIA).

  • escola_cancela: Escola cancela total ou parcialmente.

destroy(request, *args, **kwargs)[source]

Remove a solicitação se o status permitir exclusão. - somente solicitações com status RASCUNHO podem ser excluídas. - permissão: Escola terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP.

  • *args – Argumentos posicionais adicionais.

  • **kwargs – Argumentos nomeados adicionais, incluindo uuid do objeto.

Returns:

Resposta vazia com status 204 em caso de sucesso, ou erro 403 quando o status não permite exclusão.

Return type:

Response

escola_cancela(request, uuid=None)[source]

Cancela total ou parcialmente a solicitação pela escola. - cancela totalmente quando todas as datas são canceladas. - cancela parcialmente quando apenas algumas datas são canceladas,

enviando notificação por e-mail.

  • permissão: Escola terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP. Deve conter datas (list[str]) e justificativa no body.

  • uuid (str, optional) – UUID da instância de GrupoSuspensaoAlimentacao. Padrão: None.

Returns:

Dados serializados da solicitação após o cancelamento, ou erro 400 em caso de transição inválida ou solicitação já cancelada.

Return type:

Response

Raises:
  • InvalidTransitionError – Quando a transição de estado não é permitida pelo workflow.

  • AssertionError – Quando a solicitação já está cancelada.

get_permissions()[source]

Retorna a lista de permissões necessárias para a ação atual.

  • Para a ação list: requer IsAdminUser.

  • Para as ações retrieve e update: requer autenticação e PermissaoParaRecuperarObjeto.

  • Para as ações create e destroy: requer UsuarioEscolaTercTotal.

Returns:

Lista de instâncias de classes de permissão configuradas para a ação atual.

Return type:

list

get_serializer_class()[source]

Retorna a classe de serializer adequada para a ação atual.

  • Para as ações create, update e partial_update: utiliza GrupoSuspensaoAlimentacaoCreateSerializer.

  • Para as demais ações: utiliza GrupoSuspensaoAlimentacaoSerializer.

Returns:

Classe de serializer a ser utilizada na ação corrente.

Return type:

type

informa_suspensao(request, uuid=None)[source]

Informa a suspensão de alimentação, iniciando o fluxo pela escola. - sai do status RASCUNHO e passa para INFORMADO. - permissão: Escola terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

  • uuid (str, optional) – UUID da instância de GrupoSuspensaoAlimentacao. Padrão: None.

Returns:

Dados serializados da solicitação após a transição, ou erro 400 em caso de transição inválida.

Return type:

Response

Raises:

InvalidTransitionError – Quando a transição de estado não é permitida pelo workflow.

informadas(request)[source]

Retorna as solicitações de suspensão com status INFORMADO. - permissão: qualquer usuário autenticado.

Parameters:

request (Request) – Objeto da requisição HTTP.

Returns:

Resposta paginada com a lista de solicitações informadas.

Return type:

Response

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

Retorna as solicitações de suspensão em rascunho do usuário logado. - permissão: Escola terceirizada.

Parameters:

request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

Returns:

Resposta paginada com a lista de rascunhos do usuário.

Return type:

Response

permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>,)
queryset = <QuerySet de GrupoSuspensaoAlimentacao>
relatorio(request, uuid=None)[source]

Gera e retorna o relatório da suspensão de alimentação em PDF. - permissão: qualquer usuário autenticado com acesso à solicitação.

Parameters:
  • request (Request) – Objeto da requisição HTTP.

  • uuid (str, optional) – UUID da instância de GrupoSuspensaoAlimentacao. Padrão: None.

Returns:

Resposta contendo o PDF do relatório gerado.

Return type:

HttpResponse

serializer_class

alias of GrupoSuspensaoAlimentacaoSerializer

solicitacoes_codae(request, filtro_aplicado='sem_filtro')[source]

Retorna as solicitações de suspensão para a CODAE Gestão de Alimentação. - permissão: CODAE Gestão de Alimentação.

Parameters:
  • request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

  • filtro_aplicado (str) – Filtro de status aplicado às solicitações. Padrão: constants.SEM_FILTRO.

Returns:

Resposta paginada com a lista serializada das solicitações encontradas.

Return type:

Response

solicitacoes_terceirizada(request, filtro_aplicado='sem_filtro')[source]

Retorna as solicitações de suspensão para a empresa terceirizada. - permissão: Empresa terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

  • filtro_aplicado (str) – Filtro de status aplicado às solicitações. Padrão: "sem_filtro".

Returns:

Resposta paginada com a lista serializada das solicitações da terceirizada.

Return type:

Response

terceirizada_marca_inclusao_como_conferida(request, uuid=None)[source]

Marca a suspensão como conferida pela empresa terceirizada. - ou seja, a empresa visualizou a solicitação e está ciente. - permissão: qualquer usuário autenticado.

Parameters:
  • request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

  • uuid (str, optional) – UUID da instância de GrupoSuspensaoAlimentacao. Padrão: None.

Returns:

Dados serializados da solicitação após a marcação, ou erro 400 em caso de falha.

Return type:

Response

terceirizada_toma_ciencia(request, uuid=None)[source]

Registra a ciência da terceirizada sobre a suspensão de alimentação. - passa do status INFORMADO para TERCEIRIZADA_TOMOU_CIENCIA. - permissão: Empresa terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP contendo o usuário autenticado.

  • uuid (str, optional) – UUID da instância de GrupoSuspensaoAlimentacao. Padrão: None.

Returns:

Dados serializados da solicitação após a transição, ou erro 400 em caso de transição inválida.

Return type:

Response

Raises:

InvalidTransitionError – Quando a transição de estado não é permitida pelo workflow.

tomados_ciencia(request)[source]

Retorna as solicitações de suspensão com status TERCEIRIZADA_TOMOU_CIENCIA. - permissão: qualquer usuário autenticado.

Parameters:

request (Request) – Objeto da requisição HTTP.

Returns:

Resposta paginada com a lista de solicitações das quais a terceirizada tomou ciência.

Return type:

Response

valida_datas(obj, datas)[source]

Valida cada data para verificar se pode ser cancelada.

Parameters:
  • obj (GrupoSuspensaoAlimentacao) – Instância da solicitação a ser validada.

  • datas (list[str]) – Lista de datas no formato "%Y-%m-%d" a serem verificadas.

Raises:

InvalidTransitionError – Quando alguma data não permite cancelamento conforme a regra de negócio.

class MotivosSuspensaoCardapioViewSet(**kwargs)[source]

Bases: ReadOnlyModelViewSet

Viewset para listagem dos motivos de suspensão de alimentação.

Fornece acesso somente-leitura aos motivos cadastrados, utilizados como opções na criação de solicitações de suspensão.

Actions disponíveis:
  • list: Lista todos os motivos de suspensão.

  • retrieve: Retorna um motivo específico por UUID.

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

alias of MotivoSuspensaoSerializer

fixtures

fixtures/factories

Factories para os modelos de Suspensão de Alimentação.

Utiliza factory_boy para criação de instâncias de teste dos modelos relacionados à suspensão de alimentação escolar.

class GrupoSuspensaoAlimentacaoFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo GrupoSuspensaoAlimentacao.

Cria a escola solicitante e os campos de rastreio (escola, lote, DRE e terceirizada) via subfactories.

escola = SubFactory(EscolaFactory)
rastro_dre = SubFactory(DiretoriaRegionalFactory)
rastro_escola = SubFactory(EscolaFactory)
rastro_lote = SubFactory(LoteFactory)
rastro_terceirizada = SubFactory(EmpresaFactory)
class MotivoSuspensaoFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo MotivoSuspensao.

Gera instâncias com nome único usando sequência + Faker.

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

Bases: DjangoModelFactory

Factory para o modelo QuantidadePorPeriodoSuspensaoAlimentacao.

Cria a instância com um grupo de suspensão, um período escolar e um número aleatório de alunos via subfactories. Suporta adição de tipos de alimentação via parâmetro tipos_alimentacao.

grupo_suspensao = SubFactory(GrupoSuspensaoAlimentacaoFactory)
numero_alunos = <factory.declarations.Sequence object>
periodo_escolar = SubFactory(PeriodoEscolarFactory)
tipos_alimentacao = <factory.declarations.PostGeneration object>
class SuspensaoAlimentacaoFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo SuspensaoAlimentacao.

Associa automaticamente um GrupoSuspensaoAlimentacao e um MotivoSuspensao via subfactories.

grupo_suspensao = SubFactory(GrupoSuspensaoAlimentacaoFactory)
motivo = SubFactory(MotivoSuspensaoFactory)

managers

Managers customizados para o modelo GrupoSuspensaoAlimentacao.

Cada manager aplica um filtro diferente sobre o queryset padrão, segmentando as suspensões de alimentação por janela temporal.

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

Bases: Manager

Manager que retorna suspensões de alimentação nos próximos 7 dias.

get_queryset()[source]

Retorna o queryset filtrado pelo intervalo da semana atual.

Returns:

Suspensões cuja data está entre hoje e hoje + 7 dias.

Return type:

QuerySet

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

Bases: Manager

Manager que retorna suspensões de alimentação nos próximos 31 dias.

get_queryset()[source]

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

Returns:

Suspensões cuja data está entre hoje e hoje + 31 dias.

Return type:

QuerySet