From 91a3e5c3acd049bcd38d92aeca45e0355b412afa Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Fri, 20 May 2016 11:38:39 -0300 Subject: [PATCH] =?UTF-8?q?Transfere=20c=C3=B3digo=20de=20envio=20de=20ema?= =?UTF-8?q?il=20para=20sapl.utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/views.py | 196 ----------------------------------------------- sapl/utils.py | 196 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 196 deletions(-) diff --git a/materia/views.py b/materia/views.py index 167088b25..ddac6c42b 100644 --- a/materia/views.py +++ b/materia/views.py @@ -423,202 +423,6 @@ class AcompanhamentoExcluirView(TemplateView): return HttpResponseRedirect(self.get_redirect_url()) -def load_email_templates(templates, context={}): - - emails = [] - for t in templates: - tpl = loader.get_template(t) - email = tpl.render(Context(context)) - if t.endswith(".html"): - email = email.replace('\n', '').replace('\r', '') - emails.append(email) - return emails - - -def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''): - - if not casa_legislativa: - raise ValueError("Casa Legislativa é obrigatória") - - if not materia: - raise ValueError("Matéria é obrigatória") - - # FIXME i18n - casa_nome = (casa_legislativa.nome + ' de ' + - casa_legislativa.municipio + '-' + - casa_legislativa.uf) - - base_url = get_base_url(request) - materia_url = reverse('materia:acompanhar_materia', - kwargs={'pk': materia.id}) - confirmacao_url = reverse('materia:acompanhar_confirmar', - kwargs={'pk': materia.id}) - - autores = [] - for autoria in materia.autoria_set.all(): - autores.append(autoria.autor.nome) - - templates = load_email_templates(['email/acompanhar.txt', - 'email/acompanhar.html'], - {"casa_legislativa": casa_nome, - "logotipo": casa_legislativa.logotipo, - "descricao_materia": materia.ementa, - "autoria": autores, - "hash_txt": hash_txt, - "base_url": base_url, - "materia": str(materia), - "materia_url": materia_url, - "confirmacao_url": confirmacao_url, }) - return templates - - -def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''): - - if not casa_legislativa: - raise ValueError("Casa Legislativa é obrigatória") - - if not materia: - raise ValueError("Matéria é obrigatória") - - # FIXME i18n - casa_nome = (casa_legislativa.nome + ' de ' + - casa_legislativa.municipio + '-' + - casa_legislativa.uf) - - base_url = get_base_url(request) - url_materia = reverse('materia:acompanhar_materia', - kwargs={'pk': materia.id}) - url_excluir = reverse('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_legislativa.logotipo, - "descricao_materia": materia.ementa, - "autoria": autores, - "data": materia.tramitacao_set.last( - ).data_tramitacao, - "status": materia.tramitacao_set.last( - ).status, - "texto_acao": - materia.tramitacao_set.last().texto, - "hash_txt": hash_txt, - "materia": str(materia), - "base_url": base_url, - "materia_url": url_materia, - "excluir_url": url_excluir}) - return templates - - -def enviar_emails(sender, recipients, messages): - ''' - Recipients is a string list of email addresses - - Messages is an array of dicts of the form: - {'recipient': 'address', # useless???? - 'subject': 'subject text', - 'txt_message': 'text message', - 'html_message': 'html message' - } - ''' - - if len(messages) == 1: - # sends an email simultaneously to all recipients - send_mail(messages[0]['subject'], - messages[0]['txt_message'], - sender, - recipients, - html_message=messages[0]['html_message'], - fail_silently=False) - - elif len(recipients) > len(messages): - raise ValueError("Message list should have size 1 \ - or equal recipient list size. \ - recipients: %s, messages: %s" % (recipients, messages) - ) - - else: - # sends an email simultaneously to all reciepients - for (d, m) in zip(recipients, messages): - send_mail(m['subject'], - m['txt_message'], - sender, - [d], - html_message=m['html_message'], - fail_silently=False) - return None - - -def do_envia_email_confirmacao(request, materia, email): - # - # Envia email de confirmacao para atualizações de tramitação - # - destinatario = AcompanhamentoMateria.objects.get(materia=materia, - email=email, - confirmado=False) - casa = CasaLegislativa.objects.first() - - sender = 'sapl-test@interlegis.leg.br' - # FIXME i18n - subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia" - messages = [] - recipients = [] - - email_texts = criar_email_confirmacao(request, - casa, - materia, - destinatario.hash,) - recipients.append(destinatario.email) - messages.append({ - 'recipient': destinatario.email, - 'subject': subject, - 'txt_message': email_texts[0], - 'html_message': email_texts[1] - }) - - enviar_emails(sender, recipients, messages) - return None - - -def do_envia_email_tramitacao(request, materia): - # - # Envia email de tramitacao para usuarios cadastrados - # - destinatarios = AcompanhamentoMateria.objects.filter(materia=materia, - confirmado=True) - casa = CasaLegislativa.objects.first() - - sender = 'sapl-test@interlegis.leg.br' - # FIXME i18n - subject = "[SAPL] " + str(materia) + \ - " - Acompanhamento de Materia Legislativa" - messages = [] - recipients = [] - for destinatario in destinatarios: - email_texts = criar_email_tramitacao(request, - casa, - materia, - destinatario.hash,) - recipients.append(destinatario.email) - messages.append({ - 'recipient': destinatario.email, - 'subject': subject, - 'txt_message': email_texts[0], - 'html_message': email_texts[1] - }) - - enviar_emails(sender, recipients, messages) - return None - - class MateriaLegislativaPesquisaView(FilterView): model = MateriaLegislativa filterset_class = MateriaLegislativaFilterSet diff --git a/sapl/utils.py b/sapl/utils.py index 1b3085da4..ad1d2e111 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -212,3 +212,199 @@ def intervalos_tem_intersecao(a_inicio, a_fim, b_inicio, b_fim): maior_inicio = max(a_inicio, b_inicio) menor_fim = min(a_fim, b_fim) return maior_inicio <= menor_fim + + +def load_email_templates(templates, context={}): + + emails = [] + for t in templates: + tpl = loader.get_template(t) + email = tpl.render(Context(context)) + if t.endswith(".html"): + email = email.replace('\n', '').replace('\r', '') + emails.append(email) + return emails + + +def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''): + + if not casa_legislativa: + raise ValueError("Casa Legislativa é obrigatória") + + if not materia: + raise ValueError("Matéria é obrigatória") + + # FIXME i18n + casa_nome = (casa_legislativa.nome + ' de ' + + casa_legislativa.municipio + '-' + + casa_legislativa.uf) + + base_url = get_base_url(request) + materia_url = reverse('materia:acompanhar_materia', + kwargs={'pk': materia.id}) + confirmacao_url = reverse('materia:acompanhar_confirmar', + kwargs={'pk': materia.id}) + + autores = [] + for autoria in materia.autoria_set.all(): + autores.append(autoria.autor.nome) + + templates = load_email_templates(['email/acompanhar.txt', + 'email/acompanhar.html'], + {"casa_legislativa": casa_nome, + "logotipo": casa_legislativa.logotipo, + "descricao_materia": materia.ementa, + "autoria": autores, + "hash_txt": hash_txt, + "base_url": base_url, + "materia": str(materia), + "materia_url": materia_url, + "confirmacao_url": confirmacao_url, }) + return templates + + +def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''): + + if not casa_legislativa: + raise ValueError("Casa Legislativa é obrigatória") + + if not materia: + raise ValueError("Matéria é obrigatória") + + # FIXME i18n + casa_nome = (casa_legislativa.nome + ' de ' + + casa_legislativa.municipio + '-' + + casa_legislativa.uf) + + base_url = get_base_url(request) + url_materia = reverse('materia:acompanhar_materia', + kwargs={'pk': materia.id}) + url_excluir = reverse('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_legislativa.logotipo, + "descricao_materia": materia.ementa, + "autoria": autores, + "data": materia.tramitacao_set.last( + ).data_tramitacao, + "status": materia.tramitacao_set.last( + ).status, + "texto_acao": + materia.tramitacao_set.last().texto, + "hash_txt": hash_txt, + "materia": str(materia), + "base_url": base_url, + "materia_url": url_materia, + "excluir_url": url_excluir}) + return templates + + +def enviar_emails(sender, recipients, messages): + ''' + Recipients is a string list of email addresses + + Messages is an array of dicts of the form: + {'recipient': 'address', # useless???? + 'subject': 'subject text', + 'txt_message': 'text message', + 'html_message': 'html message' + } + ''' + + if len(messages) == 1: + # sends an email simultaneously to all recipients + send_mail(messages[0]['subject'], + messages[0]['txt_message'], + sender, + recipients, + html_message=messages[0]['html_message'], + fail_silently=False) + + elif len(recipients) > len(messages): + raise ValueError("Message list should have size 1 \ + or equal recipient list size. \ + recipients: %s, messages: %s" % (recipients, messages) + ) + + else: + # sends an email simultaneously to all reciepients + for (d, m) in zip(recipients, messages): + send_mail(m['subject'], + m['txt_message'], + sender, + [d], + html_message=m['html_message'], + fail_silently=False) + return None + + +def do_envia_email_confirmacao(request, materia, email): + # + # Envia email de confirmacao para atualizações de tramitação + # + destinatario = AcompanhamentoMateria.objects.get(materia=materia, + email=email, + confirmado=False) + casa = CasaLegislativa.objects.first() + + sender = 'sapl-test@interlegis.leg.br' + # FIXME i18n + subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia" + messages = [] + recipients = [] + + email_texts = criar_email_confirmacao(request, + casa, + materia, + destinatario.hash,) + recipients.append(destinatario.email) + messages.append({ + 'recipient': destinatario.email, + 'subject': subject, + 'txt_message': email_texts[0], + 'html_message': email_texts[1] + }) + + enviar_emails(sender, recipients, messages) + return None + + +def do_envia_email_tramitacao(request, materia): + # + # Envia email de tramitacao para usuarios cadastrados + # + destinatarios = AcompanhamentoMateria.objects.filter(materia=materia, + confirmado=True) + casa = CasaLegislativa.objects.first() + + sender = 'sapl-test@interlegis.leg.br' + # FIXME i18n + subject = "[SAPL] " + str(materia) + \ + " - Acompanhamento de Materia Legislativa" + messages = [] + recipients = [] + for destinatario in destinatarios: + email_texts = criar_email_tramitacao(request, + casa, + materia, + destinatario.hash,) + recipients.append(destinatario.email) + messages.append({ + 'recipient': destinatario.email, + 'subject': subject, + 'txt_message': email_texts[0], + 'html_message': email_texts[1] + }) + + enviar_emails(sender, recipients, messages) + return None