From a221b6f79ab4de6377c525b04cb1f819418fb1ee Mon Sep 17 00:00:00 2001
From: Eduardo Calil
Date: Tue, 30 May 2017 13:48:43 -0300
Subject: [PATCH] =?UTF-8?q?Resolve=20problemas=20com=20e-mail=20de=20acomp?=
=?UTF-8?q?anhamento=20de=20mat=C3=A9ria?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sapl/materia/views.py | 89 ++++++++++++++++++----------
sapl/templates/email/acompanhar.html | 14 ++---
sapl/templates/email/tramitacao.html | 48 +++++++--------
sapl/templates/email/tramitacao.txt | 2 +-
4 files changed, 88 insertions(+), 65 deletions(-)
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
index 58ffe509f..35f60d255 100644
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -906,7 +906,12 @@ class TramitacaoCrud(MasterDetailCrud):
def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
- do_envia_email_tramitacao(request, materia)
+
+ if 'status' in request.POST and request.POST['status']:
+ status = StatusTramitacao.objects.filter(
+ id=request.POST['status']).first()
+ do_envia_email_tramitacao(
+ request, materia, status)
return super(CreateView, self).post(request, *args, **kwargs)
class UpdateView(MasterDetailCrud.UpdateView):
@@ -915,7 +920,13 @@ class TramitacaoCrud(MasterDetailCrud):
def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(
tramitacao__id=kwargs['pk'])
- do_envia_email_tramitacao(request, materia)
+
+ if 'status' in request.POST and request.POST['status']:
+ status = StatusTramitacao.objects.filter(
+ id=request.POST['status']).first()
+ do_envia_email_tramitacao(
+ request, materia, status)
+
return super(UpdateView, self).post(request, *args, **kwargs)
@property
@@ -1245,19 +1256,32 @@ class DocumentoAcessorioView(PermissionRequiredMixin, CreateView):
class AcompanhamentoConfirmarView(TemplateView):
- def get_redirect_url(self):
- return reverse('sapl.sessao:list_pauta_sessao')
+ def get_redirect_url(self, email):
+ msg = _('Esta matéria está sendo acompanhada pelo e-mail: %s') % (
+ email)
+ messages.add_message(self.request, messages.SUCCESS, msg)
+ return reverse('sapl.materia:materialegislativa_detail',
+ kwargs={'pk': self.kwargs['pk']})
def get(self, request, *args, **kwargs):
materia_id = kwargs['pk']
hash_txt = request.GET.get('hash_txt', '')
- acompanhar = AcompanhamentoMateria.objects.get(materia_id=materia_id,
- hash=hash_txt)
+ try:
+ acompanhar = AcompanhamentoMateria.objects.get(
+ materia_id=materia_id,
+ hash=hash_txt)
+ except ObjectDoesNotExist:
+ raise Http404()
+ # except MultipleObjectsReturned:
+ # A melhor solução deve ser permitir que a exceção
+ # (MultipleObjectsReturned) seja lançada e vá para o log,
+ # pois só poderá ser causada por um erro de desenvolvimente
+
acompanhar.confirmado = True
acompanhar.save()
- return HttpResponseRedirect(self.get_redirect_url())
+ return HttpResponseRedirect(self.get_redirect_url(acompanhar.email))
class AcompanhamentoExcluirView(TemplateView):
@@ -1366,40 +1390,44 @@ class AcompanhamentoMateriaView(CreateView):
hash_txt = self.get_random_chars()
- try:
- AcompanhamentoMateria.objects.get(
- email=email,
- materia=materia,
- hash=hash_txt)
- except ObjectDoesNotExist:
- acompanhar = form.save(commit=False)
+ acompanhar = AcompanhamentoMateria.objects.get_or_create(
+ materia=materia,
+ email=form.data['email'])
+
+ # Se o segundo elemento do retorno do get_or_create for True
+ # quer dizer que o elemento não existia
+ if acompanhar[1]:
+ acompanhar = acompanhar[0]
acompanhar.hash = hash_txt
- acompanhar.materia = materia
acompanhar.usuario = usuario.username
acompanhar.confirmado = False
acompanhar.save()
- except MultipleObjectsReturned:
- AcompanhamentoMateria.objects.filter(
- email=email,
- materia=materia,
- hash=hash_txt).first()
-
do_envia_email_confirmacao(request, materia, email)
+ msg = _('Foi enviado um e-mail de confirmação. Confira sua caixa \
+ de mensagens e clique no link que nós enviamos para \
+ confirmar o acompanhamento desta matéria.')
+ messages.add_message(request, messages.SUCCESS, msg)
+ # Caso esse Acompanhamento já exista
+ # avisa ao usuário que essa matéria já está sendo acompanhada
else:
+ msg = _('Este e-mail já está acompanhando essa matéria.')
+ messages.add_message(request, messages.INFO, msg)
+
return self.render_to_response(
{'form': form,
'materia': materia,
'error': _('Essa matéria já está\
sendo acompanhada por este e-mail.')})
- return self.form_valid(form)
+ return HttpResponseRedirect(self.get_success_url())
else:
return self.render_to_response(
{'form': form,
'materia': materia})
def get_success_url(self):
- return reverse('sapl.sessao:list_pauta_sessao')
+ return reverse('sapl.materia:materialegislativa_detail',
+ kwargs={'pk': self.kwargs['pk']})
def load_email_templates(templates, context={}):
@@ -1428,7 +1456,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.uf)
base_url = get_base_url(request)
- materia_url = reverse('sapl.materia:acompanhar_materia',
+ materia_url = reverse('sapl.materia:materialegislativa_detail',
kwargs={'pk': materia.id})
confirmacao_url = reverse('sapl.materia:acompanhar_confirmar',
kwargs={'pk': materia.id})
@@ -1451,7 +1479,8 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
return templates
-def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
+def criar_email_tramitacao(request, casa_legislativa, materia, status,
+ hash_txt=''):
if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória")
@@ -1465,7 +1494,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.uf)
base_url = get_base_url(request)
- url_materia = reverse('sapl.materia:acompanhar_materia',
+ url_materia = reverse('sapl.materia:tramitacao_list',
kwargs={'pk': materia.id})
url_excluir = reverse('sapl.materia:acompanhar_excluir',
kwargs={'pk': materia.id})
@@ -1485,8 +1514,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
"autoria": autores,
"data": materia.tramitacao_set.last(
).data_tramitacao,
- "status": materia.tramitacao_set.last(
- ).status,
+ "status": status,
"texto_acao":
materia.tramitacao_set.last().texto,
"hash_txt": hash_txt,
@@ -1567,7 +1595,7 @@ def do_envia_email_confirmacao(request, materia, email):
return None
-def do_envia_email_tramitacao(request, materia):
+def do_envia_email_tramitacao(request, materia, status):
#
# Envia email de tramitacao para usuarios cadastrados
#
@@ -1585,13 +1613,14 @@ def do_envia_email_tramitacao(request, materia):
email_texts = criar_email_tramitacao(request,
casa,
materia,
+ status,
destinatario.hash,)
recipients.append(destinatario.email)
messages.append({
'recipient': destinatario.email,
'subject': subject,
'txt_message': email_texts[0],
- 'html_message': email_texts[1]
+ 'html_message': email_texts[1],
})
enviar_emails(sender, recipients, messages)
diff --git a/sapl/templates/email/acompanhar.html b/sapl/templates/email/acompanhar.html
index c95092bf2..bd1a20263 100644
--- a/sapl/templates/email/acompanhar.html
+++ b/sapl/templates/email/acompanhar.html
@@ -1,14 +1,12 @@
{% load i18n %}
{% load static %}
-
-
-
- {{casa_legislativa}}
-
- Sistema de Apoio ao Processo Legislativo
-
+
+{{casa_legislativa}}
+
+ Sistema de Apoio ao Processo Legislativo
+
+
Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:
{{materia}} - {{descricao_materia}}
{{ementa}}
diff --git a/sapl/templates/email/tramitacao.html b/sapl/templates/email/tramitacao.html
index 6ca454903..03fbea0cf 100644
--- a/sapl/templates/email/tramitacao.html
+++ b/sapl/templates/email/tramitacao.html
@@ -1,38 +1,34 @@
{% load i18n %}
{% load static %}
-
-
-
-
-
- {{casa_legislativa}}
-
- Sistema de Apoio ao Processo Legislativo
-
- A seguinte matéria de seu interesse sofreu
- tramitação registrada em {{data_registro}}
-
+
+
+ {{casa_legislativa}}
+
+ Sistema de Apoio ao Processo Legislativo
+
+ A seguinte matéria, de seu interesse, sofreu
+ Tramitação registrada em {{data_registro}}.
+
- Data da ação: {{data}}
- Status: {{status}}
- Texto da ação: {{texto_acao}}
-
-
-
- Clique aqui para excluir seu e-mail da lista de envio
-
-
Esta é uma mensagem automática.
- Por favor, não a responda.
+ Data da ação: {{data}}
+ Status: {{status}}
+ Texto da ação: {{texto_acao}}
+
+
+
+ Clique aqui para excluir seu e-mail da lista de envio
+
+
Esta é uma mensagem automática.
+ Por favor, não a responda.
diff --git a/sapl/templates/email/tramitacao.txt b/sapl/templates/email/tramitacao.txt
index 0e84653e8..b2465a18d 100644
--- a/sapl/templates/email/tramitacao.txt
+++ b/sapl/templates/email/tramitacao.txt
@@ -3,7 +3,7 @@
Sistema de Apoio ao Processo Legislativo
-----------------------------------------
-A seguinte matéria de seu interesse sofreu tramitação registrada em {{data_registro}}
+A seguinte matéria, de seu interesse, sofreu Tramitação registrada em {{data_registro}}
Matéria: {{materia}} - {{descricao_materia}}