Browse Source

tirar duplicidade

pull/2257/head
tapumar@gmail.com 7 years ago
parent
commit
4a86b68df1
  1. 57
      sapl/base/email_utils.py
  2. 42
      sapl/base/receivers.py
  3. 0
      sapl/base/signals.py
  4. 2
      sapl/materia/apps.py
  5. 30
      sapl/materia/receivers.py
  6. 2
      sapl/materia/views.py
  7. 3
      sapl/protocoloadm/apps.py
  8. 30
      sapl/protocoloadm/receivers.py
  9. 3
      sapl/protocoloadm/signals.py
  10. 16
      sapl/protocoloadm/views.py

57
sapl/base/email_utils.py

@ -62,21 +62,22 @@ def enviar_emails(sender, recipients, messages):
fail_silently=False) fail_silently=False)
def criar_email_confirmacao(base_url, casa_legislativa, tipo, doc_mat, hash_txt=''): def criar_email_confirmacao(base_url, casa_legislativa, doc_mat, tipo, hash_txt=''):
if not casa_legislativa: if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória") raise ValueError("Casa Legislativa é obrigatória")
if not doc_mat: if not doc_mat:
if tipo == "materia": if tipo == "materia":
raise ValueError("Matéria é obrigatória") msg = "Matéria é obrigatória"
else: else:
raise ValueError("Documento é obrigatório") msg = "Documento é obrigatório"
raise ValueError(msg)
# FIXME i18n # FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' + casa_nome = ("{} de {} - {}".format(casa_legislativa.nome,
casa_legislativa.municipio + '-' + casa_legislativa.municipio,
casa_legislativa.uf) casa_legislativa.uf))
if tipo == "materia": if tipo == "materia":
doc_mat_url = reverse('sapl.materia:materialegislativa_detail', doc_mat_url = reverse('sapl.materia:materialegislativa_detail',
@ -84,14 +85,12 @@ def criar_email_confirmacao(base_url, casa_legislativa, tipo, doc_mat, hash_txt=
confirmacao_url = reverse('sapl.materia:acompanhar_confirmar', confirmacao_url = reverse('sapl.materia:acompanhar_confirmar',
kwargs={'pk': doc_mat.id}) kwargs={'pk': doc_mat.id})
ementa = doc_mat.ementa ementa = doc_mat.ementa
autores = [] autores = [autoria.autor.nome for autoria in doc_mat.autoria_set.all()]
for autoria in doc_mat.autoria_set.all():
autores.append(autoria.autor.nome)
else: else:
doc_mat_url = reverse('sapl.protocoloadm:documentoadministrativo_detail', doc_mat_url = reverse('sapl.protocoloadm:documentoadministrativo_detail',
kwargs={'pk': documento.id}) kwargs={'pk': doc_mat.id})
confirmacao_url = reverse('sapl.protocoloadm:acompanhar_confirmar', confirmacao_url = reverse('sapl.protocoloadm:acompanhar_confirmar',
kwargs={'pk': documento.id}) kwargs={'pk': doc_mat.id})
ementa = doc_mat.assunto ementa = doc_mat.assunto
autores = "" autores = ""
@ -119,16 +118,17 @@ def do_envia_email_confirmacao(base_url, casa, tipo, doc_mat, destinatario):
sender = EMAIL_SEND_USER sender = EMAIL_SEND_USER
# FIXME i18n # FIXME i18n
if tipo == "materia": if tipo == "materia":
msg = " - Ative o Acompanhamento da Materia" msg = " - Ative o Acompanhamento da Matéria"
else: else:
msg = " - Ative o Acompanhamento de Documento" msg = " - Ative o Acompanhamento de Documento"
subject = "[SAPL] " + str(doc_mat) + msg subject = "[SAPL] {} {}".format(str(doc_mat), msg)
messages = [] messages = []
recipients = [] recipients = []
email_texts = criar_email_confirmacao(base_url, email_texts = criar_email_confirmacao(base_url,
casa, casa,
doc_mat, doc_mat,
tipo,
destinatario.hash,) destinatario.hash,)
recipients.append(destinatario.email) recipients.append(destinatario.email)
messages.append({ messages.append({
@ -149,14 +149,15 @@ def criar_email_tramitacao(base_url, casa_legislativa, tipo, doc_mat, status,
if not doc_mat: if not doc_mat:
if tipo == "materia": if tipo == "materia":
raise ValueError("Matéria é obrigatória") msg = "Matéria é obrigatória"
else: else:
raise ValueError("Documento é obrigatório") msg = "Documento é obrigatório"
raise ValueError(msg)
# FIXME i18n # FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' + casa_nome = ("{} de {} - {}".format(casa_legislativa.nome,
casa_legislativa.municipio + '-' + casa_legislativa.municipio,
casa_legislativa.uf) casa_legislativa.uf))
if tipo == "materia": if tipo == "materia":
doc_mat_url = reverse('sapl.materia:tramitacao_list', doc_mat_url = reverse('sapl.materia:tramitacao_list',
kwargs={'pk': doc_mat.id}) kwargs={'pk': doc_mat.id})
@ -164,19 +165,17 @@ def criar_email_tramitacao(base_url, casa_legislativa, tipo, doc_mat, status,
kwargs={'pk': doc_mat.id}) kwargs={'pk': doc_mat.id})
ementa = doc_mat.ementa ementa = doc_mat.ementa
autores = [] autores = [autoria.autor.nome for autoria in doc_mat.autoria_set.all()]
for autoria in doc_mat.autoria_set.all(): tramitacao = doc_mat.tramitacao_set.last()
autores.append(autoria.autor.nome)
else: else:
doc_mat_url = reverse('sapl.protocoloadm:tramitacao_list', doc_mat_url = reverse('sapl.protocoloadm:tramitacaoadministrativo_list',
kwargs={'pk': doc_mat.id}) kwargs={'pk': doc_mat.id})
url_excluir = reverse('sapl.protocoloadm:acompanhar_excluir', url_excluir = reverse('sapl.protocoloadm:acompanhar_excluir',
kwargs={'pk': doc_mat.id}) kwargs={'pk': doc_mat.id})
autores = "" autores = ""
ementa = doc_mat.assunto ementa = doc_mat.assunto
tramitacao = doc_mat.tramitacaoadministrativo_set.last()
tramitacao = doc_mat.tramitacao_set.last()
templates = load_email_templates(['email/tramitacao.txt', templates = load_email_templates(['email/tramitacao.txt',
'email/tramitacao.html'], 'email/tramitacao.html'],
@ -216,12 +215,10 @@ def do_envia_email_tramitacao(base_url, tipo, doc_mat, status, unidade_destino):
sender = EMAIL_SEND_USER sender = EMAIL_SEND_USER
# FIXME i18nn # FIXME i18nn
if tipo == "materia": if tipo == "materia":
msg = " - Acompanhamento de Materia Legislativa" msg = " - Acompanhamento de Matéria Legislativa"
else: else:
msg = " - Acompanhamento de Documento" msg = " - Acompanhamento de Documento"
subject = "[SAPL] {} {}".format(str(doc_mat), msg)
subject = "[SAPL] " + str(doc_mat) + \
msg
connection = get_connection() connection = get_connection()
connection.open() connection.open()
@ -234,7 +231,7 @@ def do_envia_email_tramitacao(base_url, tipo, doc_mat, status, unidade_destino):
doc_mat, doc_mat,
status, status,
unidade_destino, unidade_destino,
destinatario.hash,) destinatario.hash)
email = EmailMultiAlternatives( email = EmailMultiAlternatives(
subject, subject,

42
sapl/base/receivers.py

@ -0,0 +1,42 @@
from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver
from sapl.materia.models import Tramitacao
from sapl.protocoloadm.models import TramitacaoAdministrativo
from sapl.base.signals import tramitacao_signal
from sapl.utils import get_base_url
from sapl.base.email_utils import do_envia_email_tramitacao
@receiver(tramitacao_signal)
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):
tipo = "materia"
doc_mat = tramitacao.materia
do_envia_email_tramitacao(
get_base_url(request),
tipo,
doc_mat,
tramitacao.status,
tramitacao.unidade_tramitacao_destino)
@receiver(post_delete)
def status_tramitacao_materia(sender, instance, **kwargs):
if isinstance(sender, TramitacaoAdministrativo):
if instance.status.indicador == 'F':
materia = instance.materia
materia.em_tramitacao = True
materia.save()
elif isinstance(sender, TramitacaoAdministrativo):
if instance.status.indicador == 'F':
documento = instance.documento
documento.tramitacao = True
documento.save()

0
sapl/materia/signals.py → sapl/base/signals.py

2
sapl/materia/apps.py

@ -8,4 +8,4 @@ class AppConfig(apps.AppConfig):
verbose_name = _('Matéria') verbose_name = _('Matéria')
def ready(self): def ready(self):
from . import receivers from sapl.base import receivers

30
sapl/materia/receivers.py

@ -1,30 +0,0 @@
from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver
from sapl.materia.models import Tramitacao
from .signals import tramitacao_signal
from sapl.utils import get_base_url
from sapl.base.email_utils import do_envia_email_tramitacao
@receiver(tramitacao_signal)
def handle_tramitacao_signal(sender, **kwargs):
tramitacao = kwargs.get("post")
request = kwargs.get("request")
materia = tramitacao.materia
do_envia_email_tramitacao(
get_base_url(request),
"materia",
materia,
tramitacao.status,
tramitacao.unidade_tramitacao_destino)
@receiver(post_delete, sender=Tramitacao)
def status_tramitacao_materia(sender, instance, **kwargs):
if instance.status.indicador == 'F':
materia = instance.materia
materia.em_tramitacao = True
materia.save()

2
sapl/materia/views.py

@ -65,7 +65,7 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
RegimeTramitacao, Relatoria, StatusTramitacao, RegimeTramitacao, Relatoria, StatusTramitacao,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa, TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao) TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal from sapl.base.signals import tramitacao_signal
AssuntoMateriaCrud = CrudAux.build(AssuntoMateria, 'assunto_materia') AssuntoMateriaCrud = CrudAux.build(AssuntoMateria, 'assunto_materia')

3
sapl/protocoloadm/apps.py

@ -6,3 +6,6 @@ class AppConfig(apps.AppConfig):
name = 'sapl.protocoloadm' name = 'sapl.protocoloadm'
label = 'protocoloadm' label = 'protocoloadm'
verbose_name = _('Protocolo Administrativo') verbose_name = _('Protocolo Administrativo')
def ready(self):
from sapl.base import receivers

30
sapl/protocoloadm/receivers.py

@ -1,30 +0,0 @@
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 sapl.base.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),
tipo == "documento",
documento,
tramitacao.status,
tramitacao.unidade_tramitacao_destino)
@receiver(post_delete, sender=TramitacaoAdministrativo)
def status_tramitacao_documento(sender, instance, **kwargs):
if instance.status.indicador == 'F':
documento = instance.documento
documento.tramitacao = True
documento.save()

3
sapl/protocoloadm/signals.py

@ -1,3 +0,0 @@
import django.dispatch
tramitacao_signal = django.dispatch.Signal(providing_args=['post', 'request'])

16
sapl/protocoloadm/views.py

@ -43,7 +43,7 @@ from .forms import (AcompanhamentoDocumentoForm, AnularProcoloAdmForm,
from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo, from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo,
DocumentoAdministrativo, StatusTramitacaoAdministrativo, DocumentoAdministrativo, StatusTramitacaoAdministrativo,
TipoDocumentoAdministrativo, TramitacaoAdministrativo) TipoDocumentoAdministrativo, TramitacaoAdministrativo)
from .signals import tramitacao_signal from sapl.base.signals import tramitacao_signal
TipoDocumentoAdministrativoCrud = CrudAux.build( TipoDocumentoAdministrativoCrud = CrudAux.build(
@ -842,6 +842,20 @@ class TramitacaoAdmCrud(MasterDetailCrud):
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = TramitacaoAdmEditForm form_class = TramitacaoAdmEditForm
def form_valid(self, form):
self.object = form.save()
try:
tramitacao_signal.send(sender=TramitacaoAdministrativo,
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. 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): class ListView(DocumentoAdministrativoMixin, MasterDetailCrud.ListView):

Loading…
Cancel
Save