Browse Source

Resolve problemas com e-mail de acompanhamento de matéria

pull/1192/head
Eduardo Calil 8 years ago
parent
commit
a221b6f79a
  1. 89
      sapl/materia/views.py
  2. 14
      sapl/templates/email/acompanhar.html
  3. 48
      sapl/templates/email/tramitacao.html
  4. 2
      sapl/templates/email/tramitacao.txt

89
sapl/materia/views.py

@ -906,7 +906,12 @@ class TramitacaoCrud(MasterDetailCrud):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) 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) return super(CreateView, self).post(request, *args, **kwargs)
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
@ -915,7 +920,13 @@ class TramitacaoCrud(MasterDetailCrud):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get( materia = MateriaLegislativa.objects.get(
tramitacao__id=kwargs['pk']) 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) return super(UpdateView, self).post(request, *args, **kwargs)
@property @property
@ -1245,19 +1256,32 @@ class DocumentoAcessorioView(PermissionRequiredMixin, CreateView):
class AcompanhamentoConfirmarView(TemplateView): class AcompanhamentoConfirmarView(TemplateView):
def get_redirect_url(self): def get_redirect_url(self, email):
return reverse('sapl.sessao:list_pauta_sessao') 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): def get(self, request, *args, **kwargs):
materia_id = kwargs['pk'] materia_id = kwargs['pk']
hash_txt = request.GET.get('hash_txt', '') hash_txt = request.GET.get('hash_txt', '')
acompanhar = AcompanhamentoMateria.objects.get(materia_id=materia_id, try:
hash=hash_txt) 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.confirmado = True
acompanhar.save() acompanhar.save()
return HttpResponseRedirect(self.get_redirect_url()) return HttpResponseRedirect(self.get_redirect_url(acompanhar.email))
class AcompanhamentoExcluirView(TemplateView): class AcompanhamentoExcluirView(TemplateView):
@ -1366,40 +1390,44 @@ class AcompanhamentoMateriaView(CreateView):
hash_txt = self.get_random_chars() hash_txt = self.get_random_chars()
try: acompanhar = AcompanhamentoMateria.objects.get_or_create(
AcompanhamentoMateria.objects.get( materia=materia,
email=email, email=form.data['email'])
materia=materia,
hash=hash_txt) # Se o segundo elemento do retorno do get_or_create for True
except ObjectDoesNotExist: # quer dizer que o elemento não existia
acompanhar = form.save(commit=False) if acompanhar[1]:
acompanhar = acompanhar[0]
acompanhar.hash = hash_txt acompanhar.hash = hash_txt
acompanhar.materia = materia
acompanhar.usuario = usuario.username acompanhar.usuario = usuario.username
acompanhar.confirmado = False acompanhar.confirmado = False
acompanhar.save() acompanhar.save()
except MultipleObjectsReturned:
AcompanhamentoMateria.objects.filter(
email=email,
materia=materia,
hash=hash_txt).first()
do_envia_email_confirmacao(request, materia, email) 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: else:
msg = _('Este e-mail já está acompanhando essa matéria.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
'materia': materia, 'materia': materia,
'error': _('Essa matéria já está\ 'error': _('Essa matéria já está\
sendo acompanhada por este e-mail.')}) sendo acompanhada por este e-mail.')})
return self.form_valid(form) return HttpResponseRedirect(self.get_success_url())
else: else:
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
'materia': materia}) 'materia': materia})
def get_success_url(self): 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={}): def load_email_templates(templates, context={}):
@ -1428,7 +1456,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.uf) casa_legislativa.uf)
base_url = get_base_url(request) base_url = get_base_url(request)
materia_url = reverse('sapl.materia:acompanhar_materia', materia_url = reverse('sapl.materia:materialegislativa_detail',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
confirmacao_url = reverse('sapl.materia:acompanhar_confirmar', confirmacao_url = reverse('sapl.materia:acompanhar_confirmar',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
@ -1451,7 +1479,8 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
return templates 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: if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória") raise ValueError("Casa Legislativa é obrigatória")
@ -1465,7 +1494,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.uf) casa_legislativa.uf)
base_url = get_base_url(request) base_url = get_base_url(request)
url_materia = reverse('sapl.materia:acompanhar_materia', url_materia = reverse('sapl.materia:tramitacao_list',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
url_excluir = reverse('sapl.materia:acompanhar_excluir', url_excluir = reverse('sapl.materia:acompanhar_excluir',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
@ -1485,8 +1514,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
"autoria": autores, "autoria": autores,
"data": materia.tramitacao_set.last( "data": materia.tramitacao_set.last(
).data_tramitacao, ).data_tramitacao,
"status": materia.tramitacao_set.last( "status": status,
).status,
"texto_acao": "texto_acao":
materia.tramitacao_set.last().texto, materia.tramitacao_set.last().texto,
"hash_txt": hash_txt, "hash_txt": hash_txt,
@ -1567,7 +1595,7 @@ def do_envia_email_confirmacao(request, materia, email):
return None return None
def do_envia_email_tramitacao(request, materia): def do_envia_email_tramitacao(request, materia, status):
# #
# Envia email de tramitacao para usuarios cadastrados # Envia email de tramitacao para usuarios cadastrados
# #
@ -1585,13 +1613,14 @@ def do_envia_email_tramitacao(request, materia):
email_texts = criar_email_tramitacao(request, email_texts = criar_email_tramitacao(request,
casa, casa,
materia, materia,
status,
destinatario.hash,) destinatario.hash,)
recipients.append(destinatario.email) recipients.append(destinatario.email)
messages.append({ messages.append({
'recipient': destinatario.email, 'recipient': destinatario.email,
'subject': subject, 'subject': subject,
'txt_message': email_texts[0], 'txt_message': email_texts[0],
'html_message': email_texts[1] 'html_message': email_texts[1],
}) })
enviar_emails(sender, recipients, messages) enviar_emails(sender, recipients, messages)

14
sapl/templates/email/acompanhar.html

@ -1,14 +1,12 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
<html><head></head><body bgcolor='#ffffff'> <html><head></head><body bgcolor='#ffffff'>
<p align='center'>
<img src="{{base_url}}{% if logotipo %}{{ MEDIA_URL }}{{ logotipo }}{% else %}{% static 'img/logo.png' %}{% endif %}" <h2 align='center'><b>{{casa_legislativa}}</b>
alt="Logo" class="img-responsive visible-lg-inline-block vcenter" > <br/>
</p> Sistema de Apoio ao Processo Legislativo
<h2 align='center'><b>{{casa_legislativa}}</b> </h2>
<br/>
Sistema de Apoio ao Processo Legislativo
</h2>
<p>Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:</p> <p>Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:</p>
<a href="{{base_url}}{{materia_url}}">{{materia}}<b> - {{descricao_materia}}</b></a><br/> <a href="{{base_url}}{{materia_url}}">{{materia}}<b> - {{descricao_materia}}</b></a><br/>
{{ementa}}<br/> {{ementa}}<br/>

48
sapl/templates/email/tramitacao.html

@ -1,38 +1,34 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
<html> <html>
<head></head> <head></head>
<body bgcolor='#ffffff'> <body bgcolor='#ffffff'>
<p align='center'> <h2 align='center'><b>{{casa_legislativa}}</b>
<img src="{{base_url}}{% if logotipo %}{{ MEDIA_URL }}{{ logotipo }}{% else %}{% static 'img/logo.png' %}{% endif %}" <br/>
alt="Logo" class="img-responsive visible-lg-inline-block vcenter" > Sistema de Apoio ao Processo Legislativo
</p> </h2>
<h2 align='center'><b>{{casa_legislativa}}</b> <p>A seguinte mat&eacute;ria, de seu interesse, sofreu
<br/> Tramita&ccedil;&atilde;o registrada em <b>{{data_registro}}</b>.
Sistema de Apoio ao Processo Legislativo </p>
</h2>
<p>A seguinte mat&eacute;ria de seu interesse sofreu
tramita&ccedil;&atilde;o registrada em {{data_registro}}
</p>
<h4> <h4>
<a href="{{base_url}}{{materia_url}}"><b>{{materia}} - {{descricao_materia}}</b></a> <a href="{{base_url}}{{materia_url}}"><b>{{materia}} - {{descricao_materia}}</b></a>
<br/><br/> <br/><br/>
<b>Autoria:</b></br> <b>Autoria:</b></br>
{% for autor in autoria %} {% for autor in autoria %}
{{ autor }}</br> {{ autor }}</br>
{% endfor %} {% endfor %}
</h4> </h4>
<p></p> <p></p>
<p> <p>
<b>Data da a&ccedil;&atilde;o</b>: {{data}}<br/> <b>Data da a&ccedil;&atilde;o</b>: {{data}}<br/>
<b>Status</b>: {{status}}<br/> <b>Status</b>: {{status}}<br/>
<b>Texto da a&ccedil;&atilde;o</b>: {{texto_acao}}</p> <b>Texto da a&ccedil;&atilde;o</b>: {{texto_acao}}</p>
<hr> <hr>
<p> <p>
<a href="{{base_url}}{{excluir_url}}?hash_txt={{hash_txt}}"> <a href="{{base_url}}{{excluir_url}}?hash_txt={{hash_txt}}">
Clique aqui para excluir seu e-mail da lista de envio</a> Clique aqui para excluir seu e-mail da lista de envio</a>
<p> <p>
<p>Esta &eacute; uma mensagem autom&aacute;tica. <p>Esta &eacute; uma mensagem autom&aacute;tica.
Por favor, n&atilde;o a responda.</p> Por favor, n&atilde;o a responda.</p>
</body> </body>
</html> </html>

2
sapl/templates/email/tramitacao.txt

@ -3,7 +3,7 @@
Sistema de Apoio ao Processo Legislativo 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}} Matéria: {{materia}} - {{descricao_materia}}

Loading…
Cancel
Save