mirror of https://github.com/interlegis/sapl.git
Browse Source
* Fix #2252 * Muda mensagens de ERROR para WARNING in quando da erro no envio do email na tramitação * Muda mensagens de ERROR para WARNING in quando da erro no envio do email na tramitação * Fixing travis errors * Fix tests * Update acompanhar_documento.txt * Update email_utils.py * Update receivers.py * Update test_email_templates.py * adicionados testes de template dos email de acompanhamento * tirar duplicidadepull/2299/head
Talitha Pumar
6 years ago
committed by
Edward
22 changed files with 553 additions and 99 deletions
@ -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() |
@ -1,29 +0,0 @@ |
|||||
from django.db.models.signals import post_delete, post_save |
|
||||
from django.dispatch import receiver |
|
||||
|
|
||||
from sapl.materia.models import Tramitacao |
|
||||
from sapl.materia.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") |
|
||||
materia = tramitacao.materia |
|
||||
|
|
||||
do_envia_email_tramitacao( |
|
||||
get_base_url(request), |
|
||||
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() |
|
@ -0,0 +1,32 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.9.13 on 2018-09-27 15:24 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('protocoloadm', '0007_auto_20180924_1724'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='AcompanhamentoDocumento', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('usuario', models.CharField(max_length=50)), |
||||
|
('email', models.EmailField(max_length=100, verbose_name='E-mail')), |
||||
|
('data_cadastro', models.DateField(auto_now_add=True)), |
||||
|
('hash', models.CharField(max_length=8)), |
||||
|
('confirmado', models.BooleanField(default=False)), |
||||
|
('documento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='protocoloadm.DocumentoAdministrativo')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name_plural': 'Acompanhamentos de Documento', |
||||
|
'verbose_name': 'Acompanhamento de Documento', |
||||
|
}, |
||||
|
), |
||||
|
] |
@ -0,0 +1,65 @@ |
|||||
|
from django.core import mail |
||||
|
|
||||
|
from sapl.base.email_utils import enviar_emails, load_email_templates |
||||
|
|
||||
|
|
||||
|
def test_email_template_loading(): |
||||
|
expected = "<html><body>Hello Django</body></html>" |
||||
|
emails = load_email_templates(['email/test_tramitacao.html'], |
||||
|
context={"name": "Django"}) |
||||
|
|
||||
|
# strip \n and \r to compare with expected |
||||
|
actual = emails[0].replace('\n', '').replace('\r', '') |
||||
|
|
||||
|
assert actual == expected |
||||
|
|
||||
|
|
||||
|
def test_html_email_body_with_materia(): |
||||
|
templates = load_email_templates(['email/tramitacao.txt', |
||||
|
'email/tramitacao.html'], |
||||
|
{"image": 'img/logo.png', |
||||
|
"casa_legislativa": |
||||
|
"Assembléia Parlamentar", |
||||
|
"data_registro": "25/02/2016", |
||||
|
"cod_materia": "1", |
||||
|
"descricao_materia": "Assunto de teste", |
||||
|
"data": "25/02/2016", |
||||
|
"status": "Arquivado", |
||||
|
"texto_acao": "Deliberado", |
||||
|
"hash_txt": "abc01f", |
||||
|
"materia_id": "794", |
||||
|
"base_url": "http://localhost:8000", |
||||
|
"materia_url": |
||||
|
"/docadm/764/acompanhar-documento", |
||||
|
"excluir_url": |
||||
|
"/docadm/764/acompanhar-excluir"}) |
||||
|
|
||||
|
assert len(templates) == 2 |
||||
|
|
||||
|
|
||||
|
def test_enviar_email_distintos(): |
||||
|
NUM_MESSAGES = 10 |
||||
|
messages = [{'recipient': 'user-' + str(i) + '@test.com', |
||||
|
'subject': 'subject: ' + str(i), |
||||
|
'txt_message': 'txt: ' + str(i), |
||||
|
'html_message': '<html></html>', |
||||
|
} for i in range(NUM_MESSAGES)] |
||||
|
|
||||
|
recipients = [m['recipient'] for m in messages] |
||||
|
|
||||
|
enviar_emails('test@sapl.com', recipients, messages) |
||||
|
assert len(mail.outbox) == NUM_MESSAGES |
||||
|
|
||||
|
|
||||
|
def test_enviar_same_email(): |
||||
|
NUM_MESSAGES = 10 |
||||
|
messages = [{'recipient': 'user-' + str(i) + '@test.com', |
||||
|
'subject': 'subject: ' + str(i), |
||||
|
'txt_message': 'txt: ' + str(i), |
||||
|
'html_message': '<html></html>', |
||||
|
} for i in range(NUM_MESSAGES)] |
||||
|
|
||||
|
recipients = [m['recipient'] for m in messages] |
||||
|
|
||||
|
enviar_emails('test@sapl.com', recipients, [messages[0]]) |
||||
|
assert len(mail.outbox) == 1 |
@ -0,0 +1,25 @@ |
|||||
|
{% load i18n %} |
||||
|
{% load static %} |
||||
|
<html><head></head><body bgcolor='#ffffff'> |
||||
|
|
||||
|
<h2 align='center'><b>{{casa_legislativa}}</b> |
||||
|
<br/> |
||||
|
Sistema de Apoio ao Processo Legislativo |
||||
|
</h2> |
||||
|
|
||||
|
<p>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir:</p> |
||||
|
<a href="{{base_url}}{{documento_url}}">{{documento}}<b> - {{descricao_documento}}</b></a><br/> |
||||
|
{{assunto}}<br/> |
||||
|
</h4> |
||||
|
<p></p> |
||||
|
<p>Para garantia de sua privacidade, solicitamos que ative o recebimento das futuras mensagens clicando no link:</p> |
||||
|
|
||||
|
<h4> |
||||
|
<a href="{{base_url}}{{confirmacao_url}}?hash_txt={{hash_txt}}">{{base_url}}{{confirmacao_url}}?hash_txt={{hash_txt}}</a> |
||||
|
</h4> |
||||
|
<br/> |
||||
|
<hr> |
||||
|
<p>Caso não tenha realizado o cadastramento em nosso sistema, favor desconsiderar a presente mensagem<br/> |
||||
|
Esta é uma mensagem automática. Por favor, não responda.</p> |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,16 @@ |
|||||
|
{{casa_legislativa}} |
||||
|
|
||||
|
Sistema de Apoio ao Processo Legislativo |
||||
|
|
||||
|
>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir: |
||||
|
|
||||
|
{{base_url}}{{documento_url}} - {{documento}} - {{descricao_documento}} |
||||
|
|
||||
|
{{assunto}} |
||||
|
|
||||
|
Para garantia de sua privacidade, solicitamos que ative o recebimento das futuras mensagens acessando no link: |
||||
|
|
||||
|
{{base_url}}{{url_confirmar}}?hash_txt={{hash_txt}} |
||||
|
|
||||
|
Caso não tenha realizado o cadastramento em nosso sistema, favor desconsiderar a presente mensagem |
||||
|
Esta é uma mensagem automática. Por favor, não responda. |
@ -0,0 +1,21 @@ |
|||||
|
{% extends "crud/detail.html" %} |
||||
|
{% load i18n %} |
||||
|
{% load crispy_forms_tags %} |
||||
|
{% block actions %} {% endblock %} |
||||
|
{% block detail_content %} |
||||
|
|
||||
|
<h1>Acompanhamento de Documento</h1> |
||||
|
<hr> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-4"><b>Tipo:</b> {{documento.tipo.sigla}} - {{documento.tipo.descricao}}</div> |
||||
|
<div class="col-md-4"><b>Número:</b> {{documento.numero}}</div> |
||||
|
<div class="col-md-4"><b>Ano:</b> {{documento.ano}}</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-12"><b>Assunto:</b> {{documento.assunto|safe}}</div> |
||||
|
</div> |
||||
|
|
||||
|
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %} |
||||
|
{% crispy form %} |
||||
|
{% endblock %} |
Loading…
Reference in new issue