Ejemplo n.º 1
0
def do_envia_email_confirmacao(base_url, casa, tipo, doc_mat, destinatario):
    #
    # Envia email de confirmacao para atualizações de tramitação
    #

    logger = logging.getLogger(__name__)

    if not mail_service_configured():
        logger.warning(_('Servidor de email não configurado.'))
        return

    sender = EMAIL_SEND_USER
    # FIXME i18n
    if tipo == "materia":
        msg = " - Ative o Acompanhamento da Matéria"
    else:
        msg = " - Ative o Acompanhamento de Documento"
    subject = "[SAPL] {} {}".format(str(doc_mat), msg)
    messages = []
    recipients = []

    email_texts = criar_email_confirmacao(base_url,
                                          casa,
                                          doc_mat,
                                          tipo,
                                          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)
Ejemplo n.º 2
0
def do_envia_email_tramitacao(base_url, tipo, doc_mat, status,
                              unidade_destino):
    #
    # Envia email de tramitacao para usuarios cadastrados
    #

    logger = logging.getLogger(__name__)
    if not mail_service_configured():
        logger.warning(_('Servidor de email não configurado.'))
        return

    if tipo == "materia":
        destinatarios = AcompanhamentoMateria.objects.filter(materia=doc_mat,
                                                             confirmado=True)
    else:
        destinatarios = AcompanhamentoDocumento.objects.filter(
            documento=doc_mat, confirmado=True)

    if not destinatarios:
        logger.debug(
            _('Não existem destinatários cadastrados para essa matéria.'))
        return

    casa = CasaLegislativa.objects.first()

    sender = EMAIL_SEND_USER
    # FIXME i18nn
    if tipo == "materia":
        msg = " - Acompanhamento de Matéria Legislativa"
    else:
        msg = " - Acompanhamento de Documento"
    subject = "[SAPL] {} {}".format(str(doc_mat), msg)

    connection = get_connection()
    connection.open()

    for destinatario in destinatarios:
        try:
            email_texts = criar_email_tramitacao(base_url, casa, tipo, doc_mat,
                                                 status, unidade_destino,
                                                 destinatario.hash)

            email = EmailMultiAlternatives(subject,
                                           email_texts[0],
                                           sender, [destinatario.email],
                                           connection=connection)
            email.attach_alternative(email_texts[1], "text/html")
            email.send()

        # Garantia de que, mesmo com o lançamento de qualquer exceção,
        # a conexão será fechada
        except Exception:
            connection.close()
            raise Exception(
                'Erro ao enviar e-mail de acompanhamento de matéria.')

    connection.close()
Ejemplo n.º 3
0
        def get_success_url(self):
            username = self.request.user.username
            pk_autor = self.object.id
            url_reverse = reverse('sapl.base:autor_detail',
                                  kwargs={'pk': pk_autor})

            if not mail_service_configured():
                self.logger.warning(
                    _('Registro de Autor sem envio de email. '
                      'Servidor de email não configurado.'))
                return url_reverse

            try:
                self.logger.debug('user='******'. Enviando email na criação de Autores.')

                kwargs = {}
                user = self.object.user

                if not user:
                    return url_reverse

                kwargs['token'] = default_token_generator.make_token(user)
                kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
                assunto = "SAPL - Confirmação de Conta"
                full_url = self.request.get_raw_uri()
                url_base = full_url[:full_url.find('sistema') - 1]

                mensagem = (
                    "Este e-mail foi utilizado para fazer cadastro no " +
                    "SAPL com o perfil de Autor. Agora você pode " +
                    "criar/editar/enviar Proposições.\n" +
                    "Seu nome de usuário é: " + self.request.POST['username'] +
                    "\n"
                    "Caso você não tenha feito este cadastro, por favor " +
                    "ignore esta mensagem. Caso tenha, clique " +
                    "no link abaixo\n" + url_base +
                    reverse('sapl.base:confirmar_email', kwargs=kwargs))
                remetente = settings.EMAIL_SEND_USER
                destinatario = [user.email]
                send_mail(assunto,
                          mensagem,
                          remetente,
                          destinatario,
                          fail_silently=False)
            except Exception as e:
                print(_('Erro no envio de email na criação de Autores.'))
                self.logger.error(
                    'user='******'. Erro no envio de email na criação de Autores. ' +
                    str(e))

            return url_reverse
Ejemplo n.º 4
0
    def get(self, request, *args, **kwargs):
        if not mail_service_configured():
            self.logger.warning(_('Servidor de email não configurado.'))
            messages.error(request, _('Serviço de Acompanhamento de '
                                      'Documentos não foi configurado'))
            return redirect('/')

        pk = self.kwargs['pk']
        documento = DocumentoAdministrativo.objects.get(id=pk)

        return self.render_to_response(
            {'form': AcompanhamentoDocumentoForm(),
             'documento': documento})
Ejemplo n.º 5
0
    def post(self, request, *args, **kwargs):
        if not mail_service_configured():
            self.logger.warning(_('Servidor de email não configurado.'))
            messages.error(request, _('Serviço de Acompanhamento de '
                                      'Documentos não foi configurado'))
            return redirect('/')

        form = AcompanhamentoDocumentoForm(request.POST)
        pk = self.kwargs['pk']
        documento = DocumentoAdministrativo.objects.get(id=pk)

        if form.is_valid():
            email = form.cleaned_data['email']
            usuario = request.user

            hash_txt = self.get_random_chars()

            acompanhar = AcompanhamentoDocumento.objects.get_or_create(
                documento=documento,
                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.usuario = usuario.username
                acompanhar.confirmado = False
                acompanhar.save()

                base_url = get_base_url(request)

                destinatario = AcompanhamentoDocumento.objects.get(
                    documento=documento,
                    email=email,
                    confirmado=False)
                casa = CasaLegislativa.objects.first()

                do_envia_email_confirmacao(base_url,
                                           casa,
                                           "documento",
                                           documento,
                                           destinatario)
                self.logger.info('user={} .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 deste documento.'.format(usuario.username))
                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 deste documento.')
                messages.add_message(request, messages.SUCCESS, msg)

            # Caso esse Acompanhamento já exista
            # avisa ao usuário que esse documento já está sendo acompanhado
            else:
                self.logger.info('user='******'. Este e-mail já está acompanhando esse documento (pk={}).'.format(pk))
                msg = _('Este e-mail já está acompanhando esse documento.')
                messages.add_message(request, messages.INFO, msg)

                return self.render_to_response(
                    {'form': form,
                     'documento': documento,
                     'error': _('Esse documento já está\
                     sendo acompanhada por este e-mail.')})
            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                {'form': form,
                 'documento': documento})