Browse Source

loggers na view do app materia

pull/2307/head
Cesar Carvalho 7 years ago
parent
commit
889f0d9ba5
  1. 79
      sapl/materia/views.py

79
sapl/materia/views.py

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

Loading…
Cancel
Save