From de54ce88fb5db9312614d0071aaf387d506c459b Mon Sep 17 00:00:00 2001 From: eribeiro Date: Tue, 23 Feb 2021 13:51:49 -0300 Subject: [PATCH] Ajusta signals --- sapl/base/receivers.py | 30 ++++++++++---- sapl/base/signals.py | 2 +- sapl/materia/views.py | 83 +++++++++++++++++++------------------- sapl/protocoloadm/views.py | 62 ++++++++++++++-------------- sapl/utils.py | 2 +- 5 files changed, 96 insertions(+), 83 deletions(-) diff --git a/sapl/base/receivers.py b/sapl/base/receivers.py index e812a3f5b..424c6c4b6 100644 --- a/sapl/base/receivers.py +++ b/sapl/base/receivers.py @@ -9,22 +9,36 @@ from django.utils import timezone from sapl.base.email_utils import do_envia_email_tramitacao from sapl.base.models import AuditLog -from sapl.base.signals import tramitacao_signal from sapl.materia.models import Tramitacao from sapl.protocoloadm.models import TramitacaoAdministrativo from sapl.utils import get_base_url -@receiver(tramitacao_signal) +@receiver(post_save, sender=Tramitacao) +@receiver(post_save, sender=TramitacaoAdministrativo) def handle_tramitacao_signal(sender, **kwargs): - tramitacao = kwargs.get("post") - request = kwargs.get("request") - if 'protocoloadm' in str(sender): - doc_mat = tramitacao.documento - tipo = "documento" - elif 'materia' in str(sender): + logger = logging.getLogger(__name__) + + tramitacao = kwargs.get('instance') + + if isinstance(tramitacao, Tramitacao): tipo = "materia" doc_mat = tramitacao.materia + else: + tipo = "documento" + doc_mat = tramitacao.documento + + pilha_de_execucao = inspect.stack() + for i in pilha_de_execucao: + if i.function == 'migrate': + return + request = i.frame.f_locals.get('request', None) + if request: + break + + if not request: + logger.warning("Objeto request não disponível") + return do_envia_email_tramitacao( get_base_url(request), diff --git a/sapl/base/signals.py b/sapl/base/signals.py index b2cda2028..ab3bd6d0a 100644 --- a/sapl/base/signals.py +++ b/sapl/base/signals.py @@ -8,7 +8,7 @@ from sapl.base.models import Autor, TipoAutor from sapl.utils import models_with_gr_for_model -tramitacao_signal = django.dispatch.Signal(providing_args=['post', 'request']) +# tramitacao_signal = django.dispatch.Signal(providing_args=['post', 'request']) def cria_models_tipo_autor(app_config=None, verbosity=2, interactive=True, diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 2002ac90c..4c61c0609 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -37,7 +37,7 @@ import weasyprint import sapl from sapl.base.email_utils import do_envia_email_confirmacao from sapl.base.models import Autor, CasaLegislativa, AppConfig as BaseAppConfig -from sapl.base.signals import tramitacao_signal +# from sapl.base.signals import tramitacao_signal from sapl.comissoes.models import Comissao, Participacao, Composicao from sapl.compilacao.models import STATUS_TA_IMMUTABLE_RESTRICT, STATUS_TA_PRIVATE from sapl.compilacao.views import IntegracaoTaView @@ -1358,27 +1358,27 @@ class TramitacaoCrud(MasterDetailCrud): return context - def form_valid(self, form): - - self.object = form.save() - username = self.request.user.username - - try: - self.logger.debug("user=" + username + ". Tentando enviar Tramitacao (sender={}, post={}, request={})." - .format(Tramitacao, self.object, self.request)) - tramitacao_signal.send(sender=Tramitacao, - post=self.object, - request=self.request) - except Exception as e: - msg = _('Tramitação criada, mas e-mail de acompanhamento ' - 'de matéria não enviado. Há problemas na configuração ' - 'do e-mail.') - self.logger.warning('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento ' - 'de matéria não enviado. Há problemas na configuração ' - 'do e-mail. ' + str(e)) - messages.add_message(self.request, messages.WARNING, msg) - return HttpResponseRedirect(self.get_success_url()) - return super().form_valid(form) + # def form_valid(self, form): + # + # self.object = form.save() + # username = self.request.user.username + # + # try: + # self.logger.debug("user=" + username + ". Tentando enviar Tramitacao (sender={}, post={}, request={})." + # .format(Tramitacao, self.object, self.request)) + # # tramitacao_signal.send(sender=Tramitacao, + # # post=self.object, + # # request=self.request) + # except Exception as e: + # msg = _('Tramitação criada, mas e-mail de acompanhamento ' + # 'de matéria não enviado. Há problemas na configuração ' + # 'do e-mail.') + # self.logger.warning('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento ' + # 'de matéria não enviado. Há problemas na configuração ' + # 'do e-mail. ' + str(e)) + # messages.add_message(self.request, messages.WARNING, msg) + # return HttpResponseRedirect(self.get_success_url()) + # return super().form_valid(form) class UpdateView(MasterDetailCrud.UpdateView): form_class = TramitacaoUpdateForm @@ -1397,26 +1397,25 @@ class TramitacaoCrud(MasterDetailCrud): return initial - def form_valid(self, form): - self.object = form.save() - user = self.request.user - - try: - self.logger.debug("user=" + user.username + ". Tentando enviar Tramitacao (sender={}, post={}, request={}" - .format(Tramitacao, self.object, self.request)) - tramitacao_signal.send(sender=Tramitacao, - post=self.object, - request=self.request) - except Exception: - msg = _('Tramitação atualizada, mas e-mail de acompanhamento ' - 'de matéria não enviado. Há problemas na configuração ' - 'do e-mail.') - self.logger.warning('user=' + user.username + '. 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.WARNING, msg) - return HttpResponseRedirect(self.get_success_url()) - return super().form_valid(form) + # def form_valid(self, form): + # self.object = form.save() + # user = self.request.user + # try: + # self.logger.debug("user=" + user.username + ". Tentando enviar Tramitacao (sender={}, post={}, request={}" + # .format(Tramitacao, self.object, self.request)) + # tramitacao_signal.send(sender=Tramitacao, + # post=self.object, + # request=self.request) + # except Exception: + # msg = _('Tramitação atualizada, mas e-mail de acompanhamento ' + # 'de matéria não enviado. Há problemas na configuração ' + # 'do e-mail.') + # self.logger.warning('user=' + user.username + '. 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.WARNING, msg) + # return HttpResponseRedirect(self.get_success_url()) + # return super().form_valid(form) class ListView(MasterDetailCrud.ListView): diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 1f2a7db7c..0f411be1c 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -29,7 +29,7 @@ from django_filters.views import FilterView import sapl from sapl.base.email_utils import do_envia_email_confirmacao from sapl.base.models import Autor, CasaLegislativa, AppConfig -from sapl.base.signals import tramitacao_signal +# from sapl.base.signals import tramitacao_signal from sapl.comissoes.models import Comissao from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud, make_pagination, RP_LIST, RP_DETAIL) @@ -1281,23 +1281,23 @@ class TramitacaoAdmCrud(MasterDetailCrud): 'unidade_tramitacao_local'].widget.attrs['readonly'] = True return context - def form_valid(self, form): - self.object = form.save() - username = self.request.user.username - try: - tramitacao_signal.send(sender=TramitacaoAdministrativo, - post=self.object, - request=self.request) - except Exception as e: - self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento ' - 'não enviado. A não configuração do servidor de e-mail ' - 'impede o envio de aviso de tramitação. ' + str(e)) - msg = _('Tramitação criada, mas e-mail de acompanhamento ' - 'de documento não enviado. A não configuração do' - ' servidor de e-mail impede o envio de aviso de tramitação') - messages.add_message(self.request, messages.WARNING, msg) - return HttpResponseRedirect(self.get_success_url()) - return super().form_valid(form) + # def form_valid(self, form): + # self.object = form.save() + # # username = self.request.user.username + # # try: + # # tramitacao_signal.send(sender=TramitacaoAdministrativo, + # # post=self.object, + # # request=self.request) + # # except Exception as e: + # # self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento ' + # # 'não enviado. A não configuração do servidor de e-mail ' + # # 'impede o envio de aviso de tramitação. ' + str(e)) + # # msg = _('Tramitação criada, mas e-mail de acompanhamento ' + # # 'de documento não enviado. A não configuração do' + # # ' servidor de e-mail impede o envio de aviso de tramitação') + # # messages.add_message(self.request, messages.WARNING, msg) + # # return HttpResponseRedirect(self.get_success_url()) + # return super().form_valid(form) class UpdateView(MasterDetailCrud.UpdateView): form_class = TramitacaoAdmEditForm @@ -1316,19 +1316,19 @@ class TramitacaoAdmCrud(MasterDetailCrud): def form_valid(self, form): self.object = form.save() username = self.request.user.username - try: - tramitacao_signal.send(sender=TramitacaoAdministrativo, - post=self.object, - request=self.request) - except Exception as e: - self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento ' - 'não enviado. A não configuração do servidor de e-mail ' - 'impede o envio de aviso de tramitação. ' + str(e)) - msg = _('Tramitação criada, mas e-mail de acompanhamento ' - 'de documento não enviado. A não configuração do' - ' servidor de e-mail impede o envio de aviso de tramitação') - messages.add_message(self.request, messages.WARNING, msg) - return HttpResponseRedirect(self.get_success_url()) + # try: + # tramitacao_signal.send(sender=TramitacaoAdministrativo, + # post=self.object, + # request=self.request) + # except Exception as e: + # self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento ' + # 'não enviado. A não configuração do servidor de e-mail ' + # 'impede o envio de aviso de tramitação. ' + str(e)) + # msg = _('Tramitação criada, mas e-mail de acompanhamento ' + # 'de documento não enviado. A não configuração do' + # ' servidor de e-mail impede o envio de aviso de tramitação') + # messages.add_message(self.request, messages.WARNING, msg) + # return HttpResponseRedirect(self.get_success_url()) return super().form_valid(form) class ListView(DocumentoAdministrativoMixin, MasterDetailCrud.ListView): diff --git a/sapl/utils.py b/sapl/utils.py index fd04b89f6..91a2f6d7f 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -1018,7 +1018,7 @@ def google_recaptcha_configured(): def lista_anexados(principal): - from sapl.materia import MateriaLegislativa + from sapl.materia.models import MateriaLegislativa from sapl.materia.models import Anexada from sapl.protocoloadm.models import Anexado