From 889f0d9ba5abd19c799a2e8f643c607e31b4cdd2 Mon Sep 17 00:00:00 2001 From: Cesar Carvalho Date: Thu, 11 Oct 2018 18:27:46 -0300 Subject: [PATCH] loggers na view do app materia --- sapl/materia/views.py | 87 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 13 deletions(-) diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 9e738dbe9..8c1fc6d21 100755 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -7,7 +7,7 @@ from crispy_forms.layout import HTML from django.contrib import messages from django.contrib.auth.decorators import permission_required from django.contrib.auth.mixins import PermissionRequiredMixin -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned from django.core.urlresolvers import reverse from django.db.models import Max from django.http import HttpResponse, JsonResponse @@ -21,6 +21,7 @@ from django.views.generic.base import RedirectView from django.views.generic.edit import FormView from django_filters.views import FilterView import weasyprint +import logging import sapl from sapl.base.models import Autor, CasaLegislativa @@ -92,6 +93,8 @@ def autores_ja_adicionados(materia_pk): def proposicao_texto(request, pk): + logger = logging.getLogger(__name__) + logger.info('- Tentando obter objeto Proposicao.') proposicao = Proposicao.objects.get(pk=pk) if proposicao.texto_original: @@ -113,6 +116,7 @@ def proposicao_texto(request, pk): response['Content-Disposition'] = ( 'inline; filename="%s"' % arquivo.name.split('/')[-1]) return response + logger.error('- Objeto Proposicao não encontrado.') raise Http404 @@ -171,21 +175,26 @@ class CriarProtocoloMateriaView(CreateView): 'pk': materia.pk}) def get_context_data(self, **kwargs): + logger = logging.getLogger(__name__) context = super( CriarProtocoloMateriaView, self).get_context_data(**kwargs) try: + logger.info("- Tentando obter objeto Protocolo.") protocolo = Protocolo.objects.get(pk=self.kwargs['pk']) except ObjectDoesNotExist: + logger.error("- Objeto Protocolo não encontrado.") raise Http404() numero = 1 try: + logger.info("- Tentando obter materias do último ano.") materias_ano = MateriaLegislativa.objects.filter( ano=protocolo.ano, tipo=protocolo.tipo_materia).latest('numero') numero = materias_ano.numero + 1 except ObjectDoesNotExist: + logger.error("- Não foram encontradas matérias no último ano. Definido 1 como padrão.") pass # numero ficou com o valor padrão 1 acima context['form'].fields['tipo'].initial = protocolo.tipo_materia @@ -198,11 +207,14 @@ class CriarProtocoloMateriaView(CreateView): return context def form_valid(self, form): + logger = logging.getLogger(__name__) materia = form.save() try: + logger.info("- Tentando obter objeto Procolo.") protocolo = Protocolo.objects.get(pk=self.kwargs['pk']) except ObjectDoesNotExist: + logger.error('- Objeto Protocolo não encontrado.') raise Http404() if protocolo.autor: @@ -286,14 +298,17 @@ class ProposicaoTaView(IntegracaoTaView): @permission_required('materia.detail_materialegislativa') def recuperar_materia(request): + logger = logging.getLogger(__name__) tipo = TipoMateriaLegislativa.objects.get(pk=request.GET['tipo']) ano = request.GET.get('ano', '') numeracao = None try: + logger.info("Tentando obter numeração da matéria.") numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao - except AttributeError: + except AttributeError as e: + logger.error("- Excessão " + str(e) + ". Numeracao da matéria definida como None.") pass if tipo.sequencia_numeracao: @@ -521,18 +536,21 @@ class RetornarProposicao(UpdateView): permission_required = ('materia.detail_proposicao_enviada', ) def dispatch(self, request, *args, **kwargs): - + logger = logging.getLogger(__name__) try: + logger.info("Tentando obter objeto Proposicao.") p = Proposicao.objects.get(id=kwargs['pk']) except: + logger.error("Objeto Proposicao não encontrado.") raise Http404() if p.autor.user != request.user: - messages.error( + logger.error("'Usuário sem acesso a esta opção.'") + messages.error( request, 'Usuário sem acesso a esta opção.' % request.user) - return redirect('/') + return redirect('/') return super(RetornarProposicao, self).dispatch( request, *args, **kwargs) @@ -554,12 +572,14 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView): return self.object.results['url'] def get_object(self, queryset=None): + logger = logging.getLogger(__name__) try: """ Não deve haver acesso na rotina de confirmação a proposições: já recebidas -> data_recebimento != None não enviadas -> data_envio == None """ + logger.info("- Tentando obter objeto Proposicao.") proposicao = Proposicao.objects.get(pk=self.kwargs['pk'], data_envio__isnull=False, data_recebimento__isnull=True) @@ -576,9 +596,11 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView): if hasher == 'P%s/%s' % (self.kwargs['hash'], proposicao.pk): self.object = proposicao except: + logger.error("- Objeto Proposicao não encontrado.") raise Http404() if not self.object: + logger.error("- Objeto vazio.") raise Http404() return self.object @@ -704,6 +726,7 @@ class ProposicaoCrud(Crud): return context def get(self, request, *args, **kwargs): + logger = logging.getLogger(__name__) action = request.GET.get('action', '') if not action: @@ -736,17 +759,21 @@ class ProposicaoCrud(Crud): messages.success(request, _( 'Proposição enviada com sucesso.')) try: + logger.info("- Tentando obter objeto MateriaLegislativa.") numero = MateriaLegislativa.objects.filter(tipo=p.tipo.tipo_conteudo_related, ano=p.ano).last().numero + 1 messages.success(request, _( '%s : nº %s de %s
Atenção! Este número é apenas um provável ' 'número que pode não corresponder com a realidade' % (p.tipo, numero, p.ano))) - except ValueError: + except ValueError as e: + logger.error("- " + str(e)) pass - except AttributeError: + except AttributeError as e: + logger.error("- " + str(e)) pass - except TypeError: + except TypeError as e: + logger.error("- " + str(e)) pass elif action == 'return': @@ -774,10 +801,12 @@ class ProposicaoCrud(Crud): kwargs={'pk': kwargs['pk']})) def dispatch(self, request, *args, **kwargs): - + logger = logging.getLogger(__name__) try: + logger.info("- Tentando obter objeto Proposicao") p = Proposicao.objects.get(id=kwargs['pk']) except: + logger.error("- Erro ao obter proposicao. Retornando 404.") raise Http404() if not self.has_permission(): @@ -974,15 +1003,19 @@ class RelatoriaCrud(MasterDetailCrud): form_class = RelatoriaForm def get_context_data(self, **kwargs): + logger = logging.getLogger(__name__) context = super().get_context_data(**kwargs) try: + logger.info("- Tentando obter objeto Comissao.") comissao = Comissao.objects.get( pk=context['form'].initial['comissao']) except: + logger.error("- Objeto Comissão não encontrado.") pass else: + logger.info("- Objeto Comissao obtido com sucesso.") composicao = comissao.composicao_set.order_by( '-periodo__data_inicio').first() participacao = Participacao.objects.filter( @@ -1019,14 +1052,18 @@ class RelatoriaCrud(MasterDetailCrud): form_class = RelatoriaForm def get_context_data(self, **kwargs): + logger = logging.getLogger(__name__) context = super().get_context_data(**kwargs) try: + logger.info("- Tentando obter objeto Comissao.") comissao = Comissao.objects.get( pk=context['form'].initial['comissao']) - except ObjectDoesNotExist: + except ObjectDoesNotExist: + logger.error("- Objeto Comissão não encontrado.") pass - else: + else: + logger.info("- Objeto Comissao obtido com sucesso.") composicao = comissao.composicao_set.order_by( '-periodo__data_inicio').first() participacao = Participacao.objects.filter( @@ -1097,6 +1134,8 @@ class TramitacaoCrud(MasterDetailCrud): return context def form_valid(self, form): + logger = logging.getLogger(__name__) + self.object = form.save() if form.instance.status.indicador == 'F': @@ -1106,6 +1145,7 @@ class TramitacaoCrud(MasterDetailCrud): form.instance.materia.save() try: + logger.info("Tentando enviar Tramitacao.") tramitacao_signal.send(sender=Tramitacao, post=self.object, request=self.request) @@ -1114,6 +1154,9 @@ class TramitacaoCrud(MasterDetailCrud): msg = _('Tramitação criada, mas e-mail de acompanhamento ' 'de matéria não enviado. Há problemas na configuração ' 'do e-mail.') + logger.error('- Tramitação criada, mas e-mail de acompanhamento ' + 'de matéria não enviado. Há problemas na configuração ' + 'do e-mail.') messages.add_message(self.request, messages.ERROR, msg) return HttpResponseRedirect(self.get_success_url()) return super().form_valid(form) @@ -1124,6 +1167,7 @@ class TramitacaoCrud(MasterDetailCrud): layout_key = 'TramitacaoUpdate' def form_valid(self, form): + logger = logging.getLogger(__name__) self.object = form.save() if form.instance.status.indicador == 'F': @@ -1133,6 +1177,7 @@ class TramitacaoCrud(MasterDetailCrud): form.instance.materia.save() try: + logger.info("Tentando enviar Tramitacao.") tramitacao_signal.send(sender=Tramitacao, post=self.object, request=self.request) @@ -1141,6 +1186,9 @@ class TramitacaoCrud(MasterDetailCrud): msg = _('Tramitação atualizada, mas e-mail de acompanhamento ' 'de matéria não enviado. Há problemas na configuração ' 'do e-mail.') + logger.error('- Tramitação atualizada, mas e-mail de acompanhamento ' + 'de matéria não enviado. Há problemas na configuração ' + 'do e-mail.') messages.add_message(self.request, messages.ERROR, msg) return HttpResponseRedirect(self.get_success_url()) return super().form_valid(form) @@ -1516,20 +1564,24 @@ class AcompanhamentoConfirmarView(TemplateView): kwargs={'pk': self.kwargs['pk']}) def get(self, request, *args, **kwargs): + logger = logging.getLogger(__name__) materia_id = kwargs['pk'] hash_txt = request.GET.get('hash_txt', '') try: + logger.info("- Tentando obter objeto AcompanhamentoMateria.") acompanhar = AcompanhamentoMateria.objects.get( materia_id=materia_id, hash=hash_txt) except ObjectDoesNotExist: + logger.error("- Objeto AcompanhamentoMateria não encontrado.") raise Http404() - # except MultipleObjectsReturned: + except MultipleObjectsReturned as e: # A melhor solução deve ser permitir que a exceção # (MultipleObjectsReturned) seja lançada e vá para o log, # pois só poderá ser causada por um erro de desenvolvimente - + logger.error("- " + str(e)) + pass acompanhar.confirmado = True acompanhar.save() @@ -1545,13 +1597,16 @@ class AcompanhamentoExcluirView(TemplateView): kwargs={'pk': self.kwargs['pk']}) def get(self, request, *args, **kwargs): + logger = logging.getLogger(__name__) materia_id = kwargs['pk'] hash_txt = request.GET.get('hash_txt', '') try: + logger.info("- Tentando obter objeto AcompanhamentoMateria.") AcompanhamentoMateria.objects.get(materia_id=materia_id, hash=hash_txt).delete() except ObjectDoesNotExist: + logger.error("- Objeto AcompanhamentoMateria não encontrado.") pass return HttpResponseRedirect(self.get_success_url()) @@ -1814,6 +1869,7 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView): def post(self, request, *args, **kwargs): + logger = logging.getLogger(__name__) marcadas = request.POST.getlist('materia_id') tz = timezone.get_current_timezone() @@ -1869,10 +1925,14 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView): ) t.save() try: + logger.info("Tentando enviar tramitação.") tramitacao_signal.send(sender=Tramitacao, post=t, request=self.request) except Exception: + logger.error('Tramitação criada, mas e-mail de acompanhamento ' + 'de matéria não enviado. Há problemas na configuração ' + 'do e-mail.') flag_error = True if flag_error: msg = _('Tramitação criada, mas e-mail de acompanhamento ' @@ -1890,6 +1950,7 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView): materia.save() msg = _('Tramitação completa.') + logger.info('Tramitação completa.') messages.add_message(request, messages.SUCCESS, msg) return self.get(request, self.kwargs)