Browse Source

Inicia a refatoracao

pull/1193/head
Eduardo Calil 9 years ago
parent
commit
78c47260a7
  1. 4
      sapl/materia/apps.py
  2. 76
      sapl/materia/receivers.py
  3. 15
      sapl/materia/signals.py
  4. 2
      sapl/materia/urls.py
  5. 35
      sapl/materia/views.py

4
sapl/materia/apps.py

@ -7,5 +7,5 @@ class AppConfig(apps.AppConfig):
label = 'materia' label = 'materia'
verbose_name = _('Matéria') verbose_name = _('Matéria')
# def ready(self): def ready(self):
# from . import signals from . import signals

76
sapl/materia/receivers.py

@ -0,0 +1,76 @@
from datetime import datetime
from django.core.mail import send_mass_mail
from django.core.urlresolvers import reverse
from django.dispatch import receiver
from sapl.base.models import CasaLegislativa
from sapl.materia.signals import tramitacao_signal
from sapl.settings import EMAIL_SEND_USER
from sapl.utils import get_base_url
from .models import AcompanhamentoMateria
from .views import load_email_templates
@receiver(tramitacao_signal)
def handle_tramitacao_signal(sender, **kwargs):
tramitacao = kwargs.get("post")
request = kwargs.get("request")
materia = tramitacao.materia
destinatarios = AcompanhamentoMateria.objects.filter(
materia=materia,
confirmado=True)
casa = CasaLegislativa.objects.first()
if not casa:
raise ValueError('Casa Legislativa é obrigatória')
# FIXME i18n
casa_nome = (casa.nome + ' de ' +
casa.municipio + '-' +
casa.uf)
sender = EMAIL_SEND_USER
# FIXME i18n
subject = "[SAPL] " + str(materia) + \
" - Acompanhamento de Materia Legislativa"
base_url = get_base_url(request)
url_materia = reverse('sapl.materia:tramitacao_list',
kwargs={'pk': materia.id})
url_excluir = reverse('sapl.materia:acompanhar_excluir',
kwargs={'pk': materia.id})
autores = []
for autoria in materia.autoria_set.all():
autores.append(autoria.autor.nome)
templates = load_email_templates(
['email/tramitacao.txt',
'email/tramitacao.html'],
{"casa_legislativa": casa_nome,
"data_registro": datetime.now().strftime(
"%d/%m/%Y"),
"cod_materia": materia.id,
"logotipo": casa.logotipo,
"descricao_materia": materia.ementa,
"autoria": autores,
"data": tramitacao.data_tramitacao,
"status": tramitacao.status,
"localizacao": tramitacao.unidade_tramitacao_destino,
"texto_acao": tramitacao.texto,
"hash_txt": '',
"materia": str(materia),
"base_url": base_url,
"materia_url": url_materia,
"excluir_url": url_excluir})
lista_emails = destinatarios.values_list('email', flat=True).distinct()
send_mass_mail(
((subject, templates[0], sender, lista_emails),),
fail_silently=True)

15
sapl/materia/signals.py

@ -1,10 +1,15 @@
from django.db.models.signals import post_delete, post_save from django.db.models.signals import post_delete, post_save
import django.dispatch
from sapl.utils import delete_texto, save_texto from sapl.utils import delete_texto, save_texto
from .models import DocumentoAcessorio, MateriaLegislativa from .models import DocumentoAcessorio, MateriaLegislativa, Tramitacao
tramitacao_signal = django.dispatch.Signal(providing_args=["post", "request"])
post_save.connect(save_texto, sender=MateriaLegislativa) # post_save.connect(save_texto, sender=MateriaLegislativa)
post_save.connect(save_texto, sender=DocumentoAcessorio) # post_save.connect(save_texto, sender=DocumentoAcessorio)
post_delete.connect(delete_texto, sender=MateriaLegislativa) # post_delete.connect(delete_texto, sender=MateriaLegislativa)
post_delete.connect(delete_texto, sender=DocumentoAcessorio) # post_delete.connect(delete_texto, sender=DocumentoAcessorio)

2
sapl/materia/urls.py

@ -25,6 +25,8 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
from .apps import AppConfig from .apps import AppConfig
from . import receivers
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns_materia = [ urlpatterns_materia = [

35
sapl/materia/views.py

@ -59,6 +59,8 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa, TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao) TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia') AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
@ -914,7 +916,7 @@ class TramitacaoCrud(MasterDetailCrud):
id=request.POST['status']).first() id=request.POST['status']).first()
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino']
) )
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
@ -922,6 +924,13 @@ class TramitacaoCrud(MasterDetailCrud):
unidade_destino, texto, data_tramitacao) unidade_destino, texto, data_tramitacao)
return super(CreateView, self).post(request, *args, **kwargs) return super(CreateView, self).post(request, *args, **kwargs)
def form_valid(self, form):
self.object = form.save()
tramitacao_signal.send(sender=Tramitacao,
post=self.object,
request=self.request)
return super().form_valid(form)
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = TramitacaoUpdateForm form_class = TramitacaoUpdateForm
@ -933,8 +942,7 @@ class TramitacaoCrud(MasterDetailCrud):
status = StatusTramitacao.objects.filter( status = StatusTramitacao.objects.filter(
id=request.POST['status']).first() id=request.POST['status']).first()
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino'])
)
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
@ -947,6 +955,13 @@ class TramitacaoCrud(MasterDetailCrud):
def layout_key(self): def layout_key(self):
return 'TramitacaoUpdate' return 'TramitacaoUpdate'
def form_valid(self, form):
self.object = form.save()
tramitacao_signal.send(sender=Tramitacao,
post=self.object,
request=self.request)
return super().form_valid(form)
class ListView(MasterDetailCrud.ListView): class ListView(MasterDetailCrud.ListView):
def get_queryset(self): def get_queryset(self):
@ -1493,9 +1508,9 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
return templates return templates
def criar_email_tramitacao( def criar_email_tramitacao(request, casa_legislativa, materia,
request, casa_legislativa, materia, status, status, unidade_destino, texto,
unidade_destino, texto, data_tramitacao, hash_txt=''): data_tramitacao, hash_txt=''):
if not casa_legislativa: if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória") raise ValueError("Casa Legislativa é obrigatória")
@ -1611,8 +1626,12 @@ def do_envia_email_confirmacao(request, materia, email):
return None return None
def do_envia_email_tramitacao( def do_envia_email_tramitacao(request,
request, materia, status, unidade_destino, texto, data_tramitacao): materia,
status,
unidade_destino,
texto,
data_tramitacao):
# #
# Envia email de tramitacao para usuarios cadastrados # Envia email de tramitacao para usuarios cadastrados
# #

Loading…
Cancel
Save