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

import logging

from django.core.management import BaseCommand
from django.db.models import F, Func, Value

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

logger = logging.getLogger("sigpae.cmd_corrige_protocolos_padrao_dieta_especial")
NOVO_HIFEN = " - NOVO"
NOVO_PARENTESES = " (NOVO)"


[docs] class Command(BaseCommand): """Script para corrigir protocolos padrão de dieta especial.""" help = "Corrige protocolos padrão de dieta especial"
[docs] def handle(self, *args, **options): self.stdout.write(self.style.SUCCESS("*** Corrigindo Protocolos Padrão ***")) self.remove_novo() self.trata_excecoes() self.exclui_protocolos_nao_liberados() self.inativa_solicitacoes_de_alunos()
[docs] def remove_novo(self): self.stdout.write( self.style.SUCCESS('Corrigindo protocolos com "NOVO" no nome') ) qtd_novos = ( ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo__icontains=NOVO_HIFEN ).count() + ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo__icontains=NOVO_PARENTESES ).count() ) ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo__icontains=NOVO_HIFEN ).update( nome_protocolo=Func( F("nome_protocolo"), Value(NOVO_HIFEN), Value(""), function="replace" ) ) ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo__icontains=NOVO_PARENTESES ).update( nome_protocolo=Func( F("nome_protocolo"), Value(NOVO_PARENTESES), Value(""), function="replace", ) ) self.stdout.write(self.style.SUCCESS(f"{qtd_novos} corrigidos"))
[docs] def trata_excecoes(self): protocolos_a_excluir = [ "APLV (BEBIDA DE SOJA OU LEITE DE CABRA)", "APLV (BEBIDA DE SOJA SABORIZADA)", "APLV (APTAMIL DE SOJA)" "APLV (SUCO DE FRUTA)", ] for nome_protocolo in protocolos_a_excluir: try: protocolo = ProtocoloPadraoDietaEspecial.objects.get( nome_protocolo=nome_protocolo ) if protocolo.solicitacoes_dietas_especiais.exists(): self.stdout.write( self.style.ERROR( f"{nome_protocolo} possui dietas especiais. Não pode ser " "excluído." ) ) else: protocolo.delete() self.stdout.write( self.style.SUCCESS(f"{nome_protocolo} excluido com " "sucesso") ) except Exception as e: self.stdout.write( self.style.ERROR(f"EXCEPTION ERROR {nome_protocolo}: {str(e)}") ) ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo="APLV (SUCO DE FRUTA) TERC." ).update(nome_protocolo="APLV (SUCO DE FRUTA)") self.stdout.write( self.style.SUCCESS( "APLV (SUCO DE FRUTA) TERC. atualizado para APLV (SUCO DE FRUTA" ) ) protocolo_nan = ProtocoloPadraoDietaEspecial.objects.get( nome_protocolo="INTOLERÂNCIA ALIMENTAR - FÓRMULA (NAN SUPREME)" ) SolicitacaoDietaEspecial.objects.filter( protocolo_padrao__nome_protocolo="INTOLERÂNCIA ALIMENTAR – FÓRMULA (NAN SUPREME)" ).update(protocolo_padrao=protocolo_nan) ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo="INTOLERÂNCIA ALIMENTAR – FÓRMULA (NAN SUPREME)" ).delete() self.stdout.write( self.style.SUCCESS( "INTOLERÂNCIA ALIMENTAR – FÓRMULA (NAN SUPREME) excluido com sucesso" ) )
[docs] def exclui_protocolos_nao_liberados(self): self.stdout.write( self.style.SUCCESS("*** Excluindo protolos não liberados ***") ) for protocolo in ProtocoloPadraoDietaEspecial.objects.filter( status="NAO_LIBERADO" ): try: if protocolo.solicitacoes_dietas_especiais.exists(): self.stdout.write( self.style.ERROR( f"{protocolo.nome_protocolo} possui dietas especiais. Não pode ser excluído." ) ) else: protocolo.delete() self.stdout.write( self.style.SUCCESS( f"{protocolo.nome_protocolo} excluido com " "sucesso" ) ) except Exception as e: self.stdout.write( self.style.ERROR( f"EXCEPTION ERROR {protocolo.nome_protocolo}: {str(e)}" ) )
[docs] def inativa_solicitacoes_de_alunos(self): self.stdout.write( self.style.SUCCESS("*** Inativa dietas especificas de alunos ***") ) protocolos_a_inativar = [ "DIETA ENTERAL - LORENA PEREIRA DE CAMPOS", "DIETA ENTERAL - MATHEUS GONCALVES MARTINS", "DIETA PASTOSA - ANA VICTÓRIA SOUSA LIMA", "DIETA PASTOSA - ISIS YU NA CHOI", "DIETA PASTOSA HOMOGENEA - ISIS YU NA CHOI", "DIETA PASTOSA HOMOGÊNEA - RICHARD LEAL" "SÍNDROME DE PALLISTER-KILLIAN - GIOVANNA GONÇALVES", ] qtd = ProtocoloPadraoDietaEspecial.objects.filter( nome_protocolo__in=protocolos_a_inativar ).update(ativo=False) self.stdout.write(self.style.SUCCESS(f"{qtd} protocolos inativados"))