suspensao_alimentacao_cei

admin

class SuspensaoAlimentacaoDaCEIModelAdmin(model, admin_site)[source]

Bases: ModelAdmin

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

Configura a listagem administrativa de SuspensaoAlimentacaoDaCEI, exibindo informações da escola, data, status, motivo e períodos escolares. Habilita busca textual por nome e código EOL da escola, filtros por lote, DRE, intervalo de data e motivo.

get_periodos_escolares(obj)[source]

Retorna os períodos escolares vinculados à suspensão.

Parameters:

obj (SuspensaoAlimentacaoDaCEI) – Solicitação exibida na linha atual.

Returns:

Nomes dos períodos escolares separados por vírgula, ou

"-" quando nenhum.

Return type:

str

list_display = ('escola__codigo_eol', 'escola__nome', 'data', 'status', 'motivo__nome', 'get_periodos_escolares')
list_filter = (('data', <class 'rangefilter.filters.DateRangeFilter'>), 'escola__lote', 'status')
property media
readonly_fields = ('escola',)
search_fields = ('uuid', 'escola__nome', 'escola__codigo_eol')
search_help_text = 'Pesquisar por: UUID, nome da escola, código EOL da escola'

models

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

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

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

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

Diferentemente da suspensão padrão, esta solicitação é específica para unidades de CEI e utiliza um relacionamento M2M com períodos escolares em vez de uma tabela auxiliar de quantidades por período.

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: datetime.date

Origem: dados_comuns/behaviors.py

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

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

escola: escola.Escola

Origem: django.db.models.ForeignKey

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

escola_id: int

Origem: django.db.models.ForeignKey

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

Corresponde à chave primária de escola.Escola.

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.

motivo: cardapio.MotivoSuspensao

Origem: django.db.models.ForeignKey

Descrição: Motivo associado à solicitação de suspensão de alimentação de CEI.

Motivos disponíveis:
  • Unidade sem atendimento

  • Parada Pedagógica

motivo_id: int

Origem: django.db.models.ForeignKey

Descrição: Identificador do motivo associado à solicitação de suspensão de alimentação de CEI.

Corresponde à chave primária de MotivoSuspensao.

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.

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.

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

Origem: django.db.models.ManyToManyField

Descrição: Períodos escolares associados à solicitação de suspensão de alimentação de CEI.

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

Trata-se de uma relação muitos-para-muitos com escola.PeriodoEscolar. Pode ser uma lista vazia, pois o campo permite blank.

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.

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 retorna "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

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.

classmethod get_informados()[source]

Retorna as solicitações de suspensão de CEI 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 de CEI 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

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 associado à 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 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 relatório desta solicitação no frontend.

Returns:

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

solicitação de suspensão de CEI.

Return type:

str

salvar_log_transicao(status_evento, usuario, justificativa='')[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 de CEI.

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.

  • justificativa (str, optional) – Texto justificando a transição. Padrã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

api

serializers

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

serializers_create

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

Bases: ModelSerializer

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

Resolve referências por UUID para a escola, motivo e períodos escolares. Valida datas e regras de negócio e persiste os relacionamentos M2M de períodos escolares.

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

class Meta[source]

Bases: object

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

alias of SuspensaoAlimentacaoDaCEI

create(validated_data)[source]

Cria uma solicitação de suspensão de CEI com os períodos escolares.

Parameters:

validated_data (dict) – Dados validados da solicitação, incluindo a lista periodos_escolares.

Returns:

Instância criada com os períodos escolares vinculados.

Return type:

SuspensaoAlimentacaoDaCEI

update(instance, validated_data)[source]

Atualiza uma solicitação de suspensão de CEI recriando seus períodos.

Remove os períodos escolares existentes e define os novos a partir dos dados validados.

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

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

Returns:

Instância atualizada com os novos períodos escolares.

Return type:

SuspensaoAlimentacaoDaCEI

validate(attrs)[source]

Valida as regras de negócio para a data da solicitação CEI.

A data não pode ser no passado, deve pedir com antecedência e deve pertencer ao ano corrente.

Parameters:

attrs (dict) – Atributos validados contendo a chave data.

Returns:

Atributos validados após a aplicação das regras de negócio.

Return type:

dict

viewsets

class SuspensaoAlimentacaoDaCEIViewSet(**kwargs)[source]

Bases: DataSolicitacaoContextMixin, ModelViewSet

ViewSet para gerenciamento de solicitações de suspensão de CEI.

Gerencia o ciclo de vida completo das solicitações de suspensão de alimentação de CEI: 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).

  • cancela_suspensao_cei: Escola cancela a suspensão (INFORMADO/TERCEIRIZADA_TOMOU_CIENCIA → ESCOLA_CANCELOU).

cancela_suspensao_cei(request, uuid=None)[source]

Cancela a suspensão de CEI pela escola.

Passa do status INFORMADO ou TERCEIRIZADA_TOMOU_CIENCIA para ESCOLA_CANCELOU.

  • permissão: Escola terceirizada.

Parameters:
  • request (Request) – Objeto da requisição HTTP. Deve conter justificativa no body.

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

Returns:

Dados serializados da solicitação após o cancelamento, 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.

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

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

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

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 CEI, 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 SuspensaoAlimentacaoDaCEI. 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 suspensões de CEI com status INFORMADO. - permissão: qualquer usuário autenticado.

Os resultados são ordenados por ID decrescente.

Parameters:

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

Returns:

Lista serializada das suspensões de CEI informadas.

Return type:

Response

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

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

Os resultados são paginados.

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 SuspensaoAlimentacaoDaCEI>
relatorio(request, uuid=None)[source]

Gera e retorna o relatório da suspensão de CEI 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 SuspensaoAlimentacaoDaCEI. Padrão: None.

Returns:

Resposta contendo o PDF do relatório gerado.

Return type:

HttpResponse

serializer_class

alias of SuspensaoAlimentacaoDaCEISerializer

terceirizada_marca_inclusao_como_conferida(request, uuid=None)[source]

Marca a suspensão de CEI 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 SuspensaoAlimentacaoDaCEI. Padrão: None.

Returns:

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

Return type:

Response

fixtures

fixtures/factories

Factories para o modelo de Suspensão de Alimentação de CEI.

Utiliza factory_boy para criação de instâncias de teste do modelo de suspensão de alimentação escolar de CEI.

class SuspensaoAlimentacaoDaCEIFactory(**kwargs)[source]

Bases: DjangoModelFactory

Factory para o modelo SuspensaoAlimentacaoDaCEI.

Cria uma solicitação de suspensão de alimentação de CEI com escola, motivo, data e campos de rastreio via subfactories. Suporta adição de períodos escolares via parâmetro periodos_escolares no pós-create.

criado_por = SubFactory(UsuarioFactory)
data = <factory.faker.Faker object>
escola = SubFactory(EscolaFactory)
motivo = SubFactory(MotivoSuspensaoFactory)
periodos_escolares = <factory.declarations.PostGeneration object>
rastro_dre = SubFactory(DiretoriaRegionalFactory)
rastro_escola = SubFactory(EscolaFactory)
rastro_lote = SubFactory(LoteFactory)
rastro_terceirizada = SubFactory(EmpresaFactory)