From dbbf928efe8019ee4fc775f5327ee4e7e9a9a599 Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Tue, 25 Sep 2018 15:56:55 -0100 Subject: [PATCH] =?UTF-8?q?Muda=20mensagens=20de=20ERROR=20para=20WARNING?= =?UTF-8?q?=20in=20quando=20da=20erro=20no=20envio=20do=20email=20na=20tra?= =?UTF-8?q?mita=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/views.py | 6 +++--- sapl/protocoloadm/receivers.py | 29 +++++++++++++++++++++++++++++ sapl/protocoloadm/signals.py | 3 +++ sapl/protocoloadm/views.py | 17 +++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 sapl/protocoloadm/receivers.py create mode 100644 sapl/protocoloadm/signals.py diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 9e738dbe9..d374c2caa 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1114,7 +1114,7 @@ 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.') - messages.add_message(self.request, messages.ERROR, msg) + messages.add_message(self.request, messages.WARNING, msg) return HttpResponseRedirect(self.get_success_url()) return super().form_valid(form) @@ -1141,7 +1141,7 @@ 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.') - messages.add_message(self.request, messages.ERROR, msg) + messages.add_message(self.request, messages.WARNING, msg) return HttpResponseRedirect(self.get_success_url()) return super().form_valid(form) @@ -1878,7 +1878,7 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView): msg = _('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.WARNING, msg) status = StatusTramitacao.objects.get(id=request.POST['status']) diff --git a/sapl/protocoloadm/receivers.py b/sapl/protocoloadm/receivers.py new file mode 100644 index 000000000..d0995e30b --- /dev/null +++ b/sapl/protocoloadm/receivers.py @@ -0,0 +1,29 @@ +from django.db.models.signals import post_delete, post_save +from django.dispatch import receiver + +from .models import TramitacaoAdministrativo +from .signals import tramitacao_signal +from sapl.utils import get_base_url + +from .email_utils import do_envia_email_tramitacao + + +@receiver(tramitacao_signal) +def handle_tramitacao_signal(sender, **kwargs): + tramitacao = kwargs.get("post") + request = kwargs.get("request") + documento = tramitacao.documento + + do_envia_email_tramitacao( + get_base_url(request), + documento, + tramitacao.status, + tramitacao.unidade_tramitacao_destino) + + +@receiver(post_delete, sender=Tramitacao) +def status_tramitacao_documento(sender, instance, **kwargs): + if instance.status.indicador == 'F': + documento = instance.documento + documento.tramitacao = True + documento.save() diff --git a/sapl/protocoloadm/signals.py b/sapl/protocoloadm/signals.py new file mode 100644 index 000000000..3381ff3a6 --- /dev/null +++ b/sapl/protocoloadm/signals.py @@ -0,0 +1,3 @@ +import django.dispatch + +tramitacao_signal = django.dispatch.Signal(providing_args=['post', 'request']) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 8933c502f..88a959e3c 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -43,6 +43,7 @@ from .forms import (AcompanhamentoDocumentoForm, AnularProcoloAdmForm, from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo, DocumentoAdministrativo, StatusTramitacaoAdministrativo, TipoDocumentoAdministrativo, TramitacaoAdministrativo) +from .signals import tramitacao_signal TipoDocumentoAdministrativoCrud = CrudAux.build( TipoDocumentoAdministrativo, '') @@ -821,6 +822,22 @@ class TramitacaoAdmCrud(MasterDetailCrud): 'unidade_tramitacao_local'].widget.attrs['disabled'] = True return context + def form_valid(self, form): + self.object = form.save() + + try: + tramitacao_signal.send(sender=Tramitacao, + post=self.object, + request=self.request) + except Exception as e: + # TODO log error + msg = _('Tramitação criada, mas e-mail de acompanhamento ' + 'de documento 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 UpdateView(MasterDetailCrud.UpdateView): form_class = TramitacaoAdmEditForm