예제 #1
0
def reabrir_manifestacao(request):
    template_name = "manifestacao/detalhes/dados/manifestacao_body.html"
    id_manifestacao = request.POST.get('id_manifestacao')
    justificativa = request.POST.get('justificativa')
    
    try:
        if id_manifestacao:
            
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        
        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        
        movimentacao = gerar_movimentacao_reabrir_manifestacao(gestor, manifestacao, justificativa)
        movimentacao.save()
        
        status_analise = get_object_or_404(Status, pk = Status.ID_EM_ANALISE)
        
        texto_movimentacao = 'O status da manifestação foi alterado de '+ manifestacao.status.nome + ' para ' + status_analise.nome
        
        manifestacao.status = status_analise
        manifestacao.save()
        manifestacao.movimentacoes.add(movimentacao)
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Reaberta', texto_movimentacao)
            
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[REABRIR_MANIFESTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar assinalar a informação pessoal da manifestacao', status=401)
        
    return render(request, template_name, context=locals())
예제 #2
0
def alterar_tipo_manifestacao(request):
    template_name = "manifestacao/detalhes/dados/tipo_manifestacao/tipo_manifestacao_body.html"

    try:
        manifestacao = None
        id_manifestacao = request.POST.get('id_manifestacao')
        tipo_manifestacao = request.POST.get('tipo_manifestacao')
        
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)

        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        
        tipo_manifestacao_atual = get_tipo_manifestacao_choice_by_chave(manifestacao.tipo_manifestacao)
        tipo_manifestacao_novo = get_tipo_manifestacao_choice_by_chave(tipo_manifestacao)

        movimentacao = gerar_movimentacao_tipo_manifestacao(gestor, manifestacao, tipo_manifestacao_atual, tipo_manifestacao_novo)
        movimentacao.save()
        
        manifestacao.tipo_manifestacao = tipo_manifestacao
        manifestacao.save()
        manifestacao.movimentacoes.add(movimentacao)
        
        texto_movimentacao = 'O tipo da manifestação foi alterado de : '   + tipo_manifestacao_atual  + ' para ' + tipo_manifestacao_novo
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Tipo de Manifestação', texto_movimentacao)
        
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[ALTERAR_TIPO_MANIFESTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar alterar o tipo de manifestação', status=401)
    return render(request, template_name, context=locals())
예제 #3
0
def alterar_assunto(request):
    template_name = "manifestacao/detalhes/dados/assunto/assunto_body.html"

    try:
        manifestacao = None
        assunto = None
        id_manifestacao = request.POST.get('id_manifestacao')
        id_assunto = request.POST.get('assunto')
        
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        if id_assunto:
            assunto = get_object_or_404(Assunto, pk = id_assunto)
        
        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        assunto_antigo = manifestacao.assunto.assunto
        
        movimentacao = gerar_movimentacao_assunto(gestor, manifestacao, assunto.assunto)
        movimentacao.save()
        
        manifestacao.assunto = assunto
        manifestacao.movimentacoes.add(movimentacao)
        manifestacao.save()
        
        texto_movimentacao = 'O assunto da manifestação foi alterado de '+ assunto_antigo + ' para ' + assunto.assunto
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Alteração no Assunto', texto_movimentacao)
        
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[ALTERAR_ASSUNTO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar alterar o assunto', status=401)
    return render(request, template_name, context=locals())
예제 #4
0
def analisar_manifestacao(request, id_manifestacao):
    template_name = "manifestacao/detalhes/analise/manifestacao_analise.html"

    try:
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        
        gestor = get_object_or_404(UsuarioOrgao, pk=request.user.id)
        
        if UsuarioOrgao.objects.filter(pk=request.user.id).exists():
            gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        
        status = get_object_or_404(Status, pk = Status.ID_EM_ANALISE)
        movimentacao = gerar_movimentacao_analise(gestor, manifestacao, status.nome)
        movimentacao.save()
        
        texto_movimentacao = 'O status da manifestação foi alterado de '+ manifestacao.status.nome + ' para ' + status.nome
        
        manifestacao.responsavel = gestor
        manifestacao.status = status
        
        manifestacao.data_inicio_analise = datetime.now()
        manifestacao.save()
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Em Análise', texto_movimentacao)
        
        manifestacao.movimentacoes.add(movimentacao)
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[ANALISAR_MANIFESTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um erro ao tentar analisar a manifestação', status=401)

    return render(request, template_name, context=locals())
예제 #5
0
def alterar_responsavel(request):
    template_name = "manifestacao/detalhes/responsavel/responsavel_body.html"

    try:
        manifestacao = None
        id_manifestacao = request.POST.get('id_manifestacao')
        id_gestor = request.POST.get('gestor')
        
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)

        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        gestor_novo = get_object_or_404(UsuarioOrgao, pk = id_gestor)
        
        movimentacao = gerar_movimentacao_alterar_responsavel(gestor, manifestacao, manifestacao.responsavel, gestor_novo)
        movimentacao.save()
        
        manifestacao.responsavel = gestor_novo
        manifestacao.save()
        gestor = get_gestor_by_id(request.user.id)
        is_permissao_avaliar = manifestacao.ouvidoria_destino == gestor.orgao
        manifestacao.movimentacoes.add(movimentacao)
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
    except Exception as e:
        logging.error('[ALTERAR_RESPONSAVEL] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar alterar o responsável da manifestação', status=401)
    return render(request, template_name, context=locals())
예제 #6
0
def enviar_complementacao(request):
    template_name = "manifestacao/detalhes/dados/complementacao/complementacao_body.html"

    try:
        texto_complementacao = request.POST.get('complementacao')
        id_manifestacao = request.POST.get('id_manifestacao')
        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
 
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
             
        status = get_object_or_404(Status, pk = Status.ID_COMPLEMENTADA)
        
        texto_movimentacao = 'Foi solicitado um pedido de complementação, é necessário que você responda para prosseguir com o andamento da manifestação.'
        
        movimentacao = gerar_movimentacao_complementacao(gestor, manifestacao, texto_complementacao)
        movimentacao.save()
        
        complementacao = ManifestacaoComplementacao()
        complementacao.solicitacao = texto_complementacao
        complementacao.gestor = gestor
        today = datetime.now()
        proximo_dia_util = get_proximo_dia_util(today)
        data_limite = get_data_previsao_complementacao(proximo_dia_util)
        complementacao.data_limite_resposta = data_limite
        complementacao.save()
        
        manifestacao.status = status
        manifestacao.complementacao = complementacao
        
        manifestacao.save()
        manifestacao.movimentacoes.add(movimentacao)
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Pedido de Complementação', texto_movimentacao)
        
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[ENVIAR_COMPLEMENTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar enviar pedido de complementação para o cidadão', status=401)
   
    return render(request, template_name, context=locals())
예제 #7
0
def transferir_manifestacao(request):
    template_name = "manifestacao/detalhes/dados/ouvidoria_destino/ouvidoria_destino_body.html"
    try:
        manifestacao = None
        id_manifestacao = request.POST.get('id_manifestacao')
        id_ouvidoria_destino = request.POST.get('ouvidoria_destino')
        justificativa = request.POST.get('justificativa')
        
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        
        if id_ouvidoria_destino:
            ouvidoria_destino_novo = get_object_or_404(Orgao, pk = id_ouvidoria_destino)
            
        ouvidoria_antiga = manifestacao.ouvidoria_destino.get_nome_orgao()
         
        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        movimentacao_orgao_origem = gerar_movimentacao_ouvidoria_origem(gestor, manifestacao, ouvidoria_destino_novo, justificativa)
        movimentacao_orgao_destino = gerar_movimentacao_ouvidoria_destino(gestor, manifestacao, ouvidoria_destino_novo, justificativa)
        movimentacao_orgao_origem.save()
        movimentacao_orgao_destino.save()
        
        manifestacao.ouvidoria_destino = ouvidoria_destino_novo
        manifestacao.responsavel = None
        manifestacao.save()
        
        manifestacao.movimentacoes.add(movimentacao_orgao_origem)
        manifestacao.movimentacoes.add(movimentacao_orgao_destino)
        
        texto_movimentacao = 'A manifestação foi transferida de ouvidoria: '   + ouvidoria_antiga  + ' para ' + ouvidoria_destino_novo.get_nome_orgao()
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Transferência de Ouvidoria', texto_movimentacao)
        
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[TRANSFERIR_MANIFESTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar transferir o órgão destino', status=401)
    return render(request, template_name, context=locals())
예제 #8
0
def inserir_resposta(request):
    template_name = "manifestacao/detalhes/dados/resposta/inserir_resposta_body.html"

    try:
        texto_resposta = request.POST.get('resposta')
        is_resposta_conclusiva = request.POST.get('is_resposta_conclusiva') == 'on'
        id_manifestacao = request.POST.get('id_manifestacao')
        gestor = get_object_or_404(UsuarioOrgao, pk = request.user.id)
        
        if not texto_resposta:
            return HttpResponse('É obrigatório informar uma resposta', status=401)

        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao) 
        movimentacao = gerar_movimentacao_inserir_resposta(gestor, manifestacao, texto_resposta, is_resposta_conclusiva)
        movimentacao.save()
        
        if is_resposta_conclusiva:
            manifestacao.resposta_conclusiva = texto_resposta
            status = get_object_or_404(Status, pk = Status.ID_ENCERRADA)
            manifestacao.status = status
        else:
            status = get_object_or_404(Status, pk = Status.ID_RESPOSTA_INTERMEDIARIA)
            manifestacao.status = status    
        
        manifestacao.save()
        manifestacao.movimentacoes.add(movimentacao)
        
        texto_movimentacao = 'Sua manifestação foi encerrada, acesse o sistema e consulte a resposta conclusiva informada.'
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Encerrada', texto_movimentacao)
        
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[INSERIR_RESPOSTA] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar inserir uma resposta', status=401)
   
    return render(request, template_name, context=locals())
예제 #9
0
def prorrogar_prazo_manifestacao(request):
    template_name = "manifestacao/detalhes/dados/manifestacao_body.html"
    try:
        id_manifestacao = request.POST.get('id_manifestacao')
        justificativa = request.POST.get('justificativa')
        
        if id_manifestacao:
                manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        
        gestor = get_object_or_404(UsuarioOrgao, pk=request.user.id)
        has_exists_prorrogado = manifestacao.movimentacoes.filter(tipo_alteracao=Movimentacao.CHAVE_PRORROGAR_PRAZO).exists()
        
        if has_exists_prorrogado:
            logging.error('[PRORROGAR_PRAZO_MANIFESTACAO] - Essa manifestação já possui um prazo prorrogado')
            return HttpResponse('Essa manifestação já foi prorrogada uma vez', status=401)
        
        proximo_dia_util = get_proximo_dia_util(manifestacao.data_previsao_resposta)
        data_previsao_resposta_prorrogada = get_data_prorrogacao_prazo(proximo_dia_util)
        movimentacao = gerar_movimentacao_prorrogar_manifestacao(gestor, manifestacao, justificativa, manifestacao.data_previsao_resposta, data_previsao_resposta_prorrogada)
        movimentacao.save()
        
        status_prorrogada = get_object_or_404(Status, pk = Status.ID_PRORROGADA)
        texto_movimentacao = 'O status da manifestação foi alterado de '+ manifestacao.status.nome + ' para ' + status_prorrogada.nome
        
        manifestacao.status = status_prorrogada
        manifestacao.data_previsao_resposta = data_previsao_resposta_prorrogada
        
        manifestacao.save()
        
        manifestacao.movimentacoes.add(movimentacao)
        
        if manifestacao.cidadao:
            email.enviar_email_manifestacao_movimentacao(manifestacao.cidadao, manifestacao.numero_protocolo, 'Prorrogação de Prazo', texto_movimentacao)
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
        
    except Exception as e:
        logging.error('[PRORROGAR_PRAZO_MANIFESTACAO] - ' + str(e))
        return HttpResponse('Ocorreu um problema ao tentar assinalar a informação pessoal da manifestacao ', status=401)
        
    return render(request, template_name, context=locals())
예제 #10
0
def assinalar_informacao_pessoal(request, id_manifestacao, flag_informacao_pessoal):
    template_name = "manifestacao/detalhes/dados/manifestacao_body.html"

    try:
        if id_manifestacao:
            manifestacao = get_object_or_404(Manifestacao, pk = id_manifestacao)
        
        gestor = get_object_or_404(UsuarioOrgao, pk=request.user.id)
        
        has_informacao_pessoal = flag_informacao_pessoal == 'S'
        movimentacao = gerar_movimentacao_informacao_pessoal(gestor, manifestacao, has_informacao_pessoal)
        movimentacao.save()
        
        manifestacao.has_informacao_pessoal = has_informacao_pessoal
        manifestacao.save()
        manifestacao.movimentacoes.add(movimentacao)
        manifestacao_form = ManifestacaoDetalhesForm(instance=manifestacao)
    except Exception as e:
        logging.error('[ASSINALAR_INFORMACAO_PESSOAL] - ' + str(e))
        return HttpResponse('Ocorreu um erro', status=401)
        
    return render(request, template_name, context=locals())