Source code for src.dieta_especial.management.commands.verificar_solicitacoes_sem_protocolo

import os
from datetime import datetime

from django.conf import settings
from django.core.management.base import BaseCommand
from openpyxl import Workbook

from src.dieta_especial.solicitacao_dieta_especial.models import (
    SolicitacaoDietaEspecial,
)


[docs] class Command(BaseCommand): help = "Verifica solicitações de dieta especial autorizadas sem protocolo e exporta para Excel."
[docs] def handle(self, *args, **options): self.stdout.write("Buscando solicitações autorizadas sem protocolo...") solicitacoes = ( SolicitacaoDietaEspecial.objects.filter( ativo=True, status="CODAE_AUTORIZADO", protocolo_padrao__isnull=True, ) .select_related("aluno", "rastro_escola", "rastro_dre", "classificacao") .order_by("criado_em") ) total = solicitacoes.count() if total == 0: self.stdout.write( self.style.SUCCESS("Nenhuma solicitação sem protocolo encontrada.") ) return output_dir = os.path.join(settings.MEDIA_ROOT, "exportacao_solicitacoes") os.makedirs(output_dir, exist_ok=True) data_atual = datetime.now().strftime("%Y%m%d_%H%M%S") filename = os.path.join( output_dir, f"solicitacoes_sem_protocolo_{data_atual}.xlsx" ) wb = Workbook() ws = wb.active ws.title = "Sem Protocolo" ws.append( [ "UUID Solicitação", "Código EOL", "Aluno", "DRE", "Unidade Escolar", "Classificação da Dieta", "Data Criação", "Data Último Log", ] ) for solicitacao in solicitacoes: aluno = solicitacao.aluno aluno_nome = getattr(aluno, "nome", "-") codigo_eol = getattr(aluno, "codigo_eol", "-") dre_nome = getattr(solicitacao.rastro_dre, "nome", "-") ue_nome = getattr(solicitacao.rastro_escola, "nome", "-") classificacao = getattr( solicitacao.classificacao, "nome", "Sem classificação" ) criado_em = ( solicitacao.criado_em.strftime("%d/%m/%Y %H:%M") if hasattr(solicitacao, "criado_em") and hasattr(solicitacao.criado_em, "strftime") else str(getattr(solicitacao, "criado_em", "-")) ) ws.append( [ str(solicitacao.uuid), codigo_eol, aluno_nome, dre_nome, ue_nome, classificacao, criado_em, solicitacao.data_ultimo_log, ] ) wb.save(filename) self.stdout.write( self.style.SUCCESS( f"Planilha gerada com sucesso em: {filename} ({total} solicitações encontradas)" ) )