예제 #1
0
 def save(self, domain_override=None,
     subject_template_name='registration/password_reset_subject.txt',
     email_template_name='registration/password_reset_email.html',
     use_https=False, token_generator=default_token_generator,
     from_email=None, request=None):
     """
     Generates a one-use only link for resetting password and sends to the
     user.
     """
     for user in self.users_cache[:1]:
         if not domain_override:
             current_site = get_current_site(request)
             site_name = current_site.name
             domain = current_site.domain
         else:
             site_name = domain = domain_override
         c = {
             'email': user.email,
             'domain': domain,
             'site_name': site_name,
             'uid': int_to_base36(user.id),
             'user': user,
             'token': token_generator.make_token(user),
             'protocol': use_https and 'https' or 'http',
         }
         subject = loader.render_to_string(subject_template_name, c)
         # Email subject *must not* contain newlines
         subject = ''.join(subject.splitlines())
         sendmail(
             subject=subject,
             to=[user.email],
             params=c,
             template=email_template_name,
         )
예제 #2
0
def enviar_notificacao_emails_topico(sender, instance, created, raw, using,
                                     *args, **kwargs):
    for ouvinte in instance.topico.topicoouvinte_set.exclude(
            ouvinte=instance.autor).filter(
                ouvinte__membro__status_email='A').filter(
                    notificacao__in=(
                        'P',
                        'I',
                    ),
                    dtnotificacao__lte=datetime.now() + timedelta(hours=1)):
        sendmail(
            subject=u'Tópico %s atualizado no grupo %s' %
            (instance.topico, instance.topico.grupo),
            to=[
                ouvinte.ouvinte.email,
            ],
            template='forum/emails/notificacao.html',
            params={
                'conversa': instance,
                'ouvinte': ouvinte,
                'host': settings.SITE_HOST,
            },
        )
        ouvinte.dtnotificacao = datetime.now()
        ouvinte.save()
예제 #3
0
    def get(self, request, *args, **kwargs):
        def splip_emails(emails, ite=50):
                ini = 0
                for i in range(ite, len(emails), ite):
                    yield emails[ini:i]
                    ini = i
                if len(emails) > ini:
                    yield emails[ini:len(emails)]

        self.object = self.get_object()
        if request.user.is_superuser or self.object.grupo.grupousuario_set.filter(usuario=request.user, admin=True).exists():
            emails_list = TopicoOuvinte.objects.filter(ouvinte__membro__status_email='A').filter(topico__grupo=self.object.grupo).values_list('ouvinte__email', flat=True).distinct()
            for emails in splip_emails(emails_list):
                sendmail(
                    subject=self.object.titulo,
                    bcc=emails,
                    template='forum/emails/notificacao-topico.html',
                    params={
                        'topico': self.object,
                        'host': settings.SITE_HOST,
                    },
                )
            messages.info(request, u'Notificação enviada com sucesso!')
            return HttpResponseRedirect(self.object.get_absolute_url())
        raise PermissionDenied()
예제 #4
0
 def save(self, domain_override=None,
     subject_template_name='registration/password_reset_subject.txt',
     email_template_name='registration/password_reset_email.html',
     use_https=False, token_generator=default_token_generator,
     from_email=None, request=None):
     """
     Generates a one-use only link for resetting password and sends to the
     user.
     """
     for user in self.users_cache[:1]:
         if not domain_override:
             current_site = get_current_site(request)
             site_name = current_site.name
             domain = current_site.domain
         else:
             site_name = domain = domain_override
         c = {
             'email': user.email,
             'domain': domain,
             'site_name': site_name,
             'uid': int_to_base36(user.id),
             'user': user,
             'token': token_generator.make_token(user),
             'protocol': use_https and 'https' or 'http',
         }
         subject = loader.render_to_string(subject_template_name, c)
         # Email subject *must not* contain newlines
         subject = ''.join(subject.splitlines())
         sendmail(
             subject=subject,
             to=[user.email],
             params=c,
             template=email_template_name,
         )
예제 #5
0
 def sendmail(self, template_email_name='emails/cadastro-circulo.html'):
     sendmail(
         subject=u'Criação/Atualização de Círculo',
         to=['*****@*****.**', ],
         template=template_email_name,
         params={
             'circulo': self.instance,
             'SITE_HOST': settings.SITE_HOST,
         },
     )
예제 #6
0
def pagamentoidentificado_receita_signal(sender, instance, created, raw, using, *args, **kwargs):
    if instance.dtpgto and instance.colaborador and not instance.colaborador.status_email in ('S', 'O'):
        sendmail(
            subject=u'Raiz Movimento Cidadanista - Pagamento Identificado!',
            to=[instance.colaborador.email, ],
            bcc=list(User.objects.filter(groups__name=u'Financeiro').values_list('email', flat=True)),
            template='emails/pagamento-identificado.html',
            params={
                'receita': instance,
            },
        )
예제 #7
0
def enviar_notificacao_emails_mencao(sender, instance, created, raw, using, *args, **kwargs):
    if created and not TopicoOuvinte.objects.filter(ouvinte__membro__status_email='A').filter(topico=instance.conversa.topico, ouvinte=instance.mencao, notificacao='N').exists():
        sendmail(
            subject=u'%s pediu sua atenção na Teia Digital!' % instance.colaborador,
            to=[instance.mencao.email, ],
            template='forum/emails/mencao.html',
            params={
                'mencao': instance,
                'host': settings.SITE_HOST,
            },
        )
예제 #8
0
 def sendemail(self):
     EMAILADMIN = Recurso.objects.get_or_create(recurso=u'EMAILADMIN')[0]
     if EMAILADMIN.valor:
         menssagem = self._create_messagem()
         menssagem += u'<a href="%s%s">Acessar</a>' % (settings.SITE_HOST, reverse('admin:cms_article_change', args=(self.instance.article.pk, )))
         sendmail(
             subject=u'%s - Novo comentário' % Recurso.objects.get(recurso='SITE_NAME').valor,
             bcc=EMAILADMIN.valor.split('\n'),
             template=menssagem,
             headers={'Reply-To': self.cleaned_data['email']}
         )
예제 #9
0
 def sendemail(self):
     EMAILADMIN = Recurso.objects.get_or_create(recurso=u'EMAILADMIN')[0]
     if EMAILADMIN.valor:
         menssagem = self._create_messagem()
         menssagem += u'<a href="%s%s">Acessar</a>' % (settings.SITE_HOST, reverse('admin:cms_article_change', args=(self.instance.article.pk, )))
         sendmail(
             subject=u'%s - Novo comentário' % Recurso.objects.get(recurso='SITE_NAME').valor,
             bcc=EMAILADMIN.valor.split('\n'),
             template=menssagem,
             headers={'Reply-To': self.cleaned_data['email']}
         )
예제 #10
0
def validaremail_pessoa_signal(sender, instance, created, raw, using, *args, **kwargs):
    if created and (instance.status_email is None or instance.status_email == 'N'):
        sendmail(
            subject=u'Raiz Movimento Cidadanista - Validação de email',
            to=[instance.email, ],
            template='emails/validar-email.html',
            params={
                'pessoa': instance,
                'SITE_HOST': settings.SITE_HOST,
            },
        )
예제 #11
0
 def sendmail(self, template_email_name='emails/cadastro-circulo.html'):
     sendmail(
         subject=u'Criação/Atualização de Círculo',
         to=[
             '*****@*****.**',
         ],
         template=template_email_name,
         params={
             'circulo': self.instance,
             'SITE_HOST': settings.SITE_HOST,
         },
     )
예제 #12
0
def enviar_notificacao_emails_topico(sender, instance, created, raw, using, *args, **kwargs):
    for ouvinte in instance.topico.topicoouvinte_set.exclude(ouvinte=instance.autor).filter(ouvinte__membro__status_email='A').filter(notificacao__in=('P', 'I', ), dtnotificacao__lte=datetime.now()+timedelta(hours=1)):
        sendmail(
            subject=u'Tópico %s atualizado no grupo %s' % (instance.topico, instance.topico.grupo),
            to=[ouvinte.ouvinte.email, ],
            template='forum/emails/notificacao.html',
            params={
                'conversa': instance,
                'ouvinte': ouvinte,
                'host': settings.SITE_HOST,
            },
        )
        ouvinte.dtnotificacao = datetime.now()
        ouvinte.save()
예제 #13
0
 def form_invalid(self, form):
     messages.error(self.request, u"Preencha corretamente todos os dados!")
     # TODO: Monitorar issue https://github.com/josircg/raizcidadanista/issues/52
     errors = dict(form.non_field_errors())
     errors.update(dict(form.errors))
     sendmail(
         subject=u'[LOG] Raiz Movimento Cidadanista - Tentativa de cadastro de Colaborador',
         to=[email for name, email in settings.ADMINS],
         template='emails/error.html',
         params={
             'title': u'Tentativa de cadastro de Colaborador',
             'error': u'<b>Erros:</b> %s<br><br><b>Dados:</b> %s' % (errors, dict(form.data)),
         },
     )
     return super(MembroView, self).form_invalid(form)
예제 #14
0
def validaremail_pessoa_signal(sender, instance, created, raw, using, *args,
                               **kwargs):
    if created and (instance.status_email is None
                    or instance.status_email == 'N'):
        sendmail(
            subject=u'Raiz Movimento Cidadanista - Validação de email',
            to=[
                instance.email,
            ],
            template='emails/validar-email.html',
            params={
                'pessoa': instance,
                'SITE_HOST': settings.SITE_HOST,
            },
        )
예제 #15
0
    def sendmail(self, template_email_name):
        try:
            membro = Membro.objects.get(email=self.cleaned_data['email'])
        except Membro.DoesNotExist:
            membro = Membro.objects.get(cpf=self.cleaned_data['cpf'])

        if not membro.status_email in ('S', 'O'):
            sendmail(
                subject=u'Atualização de Cadastro.',
                to=[membro.email, ],
                template=template_email_name,
                params={
                    'membro': membro,
                    'link': u'%s%s' % (settings.SITE_HOST, membro.get_absolute_update_url()),
                },
            )
예제 #16
0
def enviar_notificacao_emails_topico_proposta(sender, instance, created, raw,
                                              using, *args, **kwargs):
    def splip_emails(emails, ite=50):
        ini = 0
        for i in range(ite, len(emails), ite):
            yield emails[ini:i]
            ini = i
        if len(emails) > ini:
            yield emails[ini:len(emails)]

    if instance.escopo == 'N':
        ouvintes = TopicoOuvinte.objects.all().exclude(
            ouvinte=instance.autor).exclude(notificacao='N')
    elif instance.escopo == 'L':
        ouvintes = instance.topico.topicoouvinte_set.exclude(
            ouvinte=instance.autor).filter(notificacao__in=('P', 'I', 'V'))

    emails_list = list(
        set(
            ouvintes.filter(ouvinte__membro__status_email='A').values_list(
                'ouvinte__email', flat=True).distinct()))
    for emails in splip_emails(emails_list):
        if instance.propostaopcao_set.exists():
            sendmail(
                subject=u'Nova Enquete iniciada no tópico %s do grupo %s' %
                (instance.topico, instance.topico.grupo),
                bcc=emails,
                template='forum/emails/notificacao-enquete.html',
                params={
                    'conversa': instance,
                    'host': settings.SITE_HOST,
                },
            )
        else:
            sendmail(
                subject=u'Nova Proposta iniciada no tópico %s do grupo %s' %
                (instance.topico, instance.topico.grupo),
                bcc=emails,
                template='forum/emails/notificacao-proposta.html',
                params={
                    'conversa': instance,
                    'host': settings.SITE_HOST,
                },
            )
    ouvintes.update(dtnotificacao=datetime.now())
예제 #17
0
 def sendemail(self, to=['*****@*****.**',], bcc=[]):
     nome = self.cleaned_data.get('nome')
     email = self.cleaned_data.get('email')
     mensagem = self.cleaned_data.get('mensagem')
     sendmail(
         subject = u'Raiz Cidadanista - Formulário de contato',
         to = to,
         bcc = bcc,
         params = {
             'nome': nome,
             'email': email,
             'mensagem': mensagem,
         },
         template = 'emails/contato.html',
         headers = {
             'Reply-To': email,
         }
     )
예제 #18
0
 def sendemail(self, to=[
     '*****@*****.**',
 ], bcc=[]):
     nome = self.cleaned_data.get('nome')
     email = self.cleaned_data.get('email')
     mensagem = self.cleaned_data.get('mensagem')
     sendmail(subject=u'Raiz Cidadanista - Formulário de contato',
              to=to,
              bcc=bcc,
              params={
                  'nome': nome,
                  'email': email,
                  'mensagem': mensagem,
              },
              template='emails/contato.html',
              headers={
                  'Reply-To': email,
              })
예제 #19
0
def enviar_notificacao_emails_mencao(sender, instance, created, raw, using,
                                     *args, **kwargs):
    if created and not TopicoOuvinte.objects.filter(
            ouvinte__membro__status_email='A').filter(
                topico=instance.conversa.topico,
                ouvinte=instance.mencao,
                notificacao='N').exists():
        sendmail(
            subject=u'%s pediu sua atenção na Teia Digital!' %
            instance.colaborador,
            to=[
                instance.mencao.email,
            ],
            template='forum/emails/mencao.html',
            params={
                'mencao': instance,
                'host': settings.SITE_HOST,
            },
        )
예제 #20
0
    def form_valid(self, form):
        self.object = self.get_object()
        instance = form.save(topico=self.object, editor=self.request.user)

        # Adicionar o membro no grupo - desabilitado já que o form não é habilitado
        if not GrupoUsuario.objects.filter(grupo=self.object.grupo, usuario=self.request.user).exists():
            if self.object.grupo.privado:
                sendmail(
                    subject=u'Solicitação de ingresso no grupo %s' % self.object,
                    to=list(self.object.grupo.grupousuario_set.filter(admin=True).values_list(u'usuario__email', flat=True)),
                    template='forum/emails/solicitacao-ingresso.html',
                    params={
                        'grupo': self.object.grupo,
                        'usuario': self.request.user,
                        'host': settings.SITE_HOST,
                    },
                )
                messages.info(self.request, u'O seu ingresso neste grupo foi solicitado. Assim que aprovado, você será incluído como membro deste. Obrigado!')
            else:
                GrupoUsuario(grupo=self.object.grupo, usuario=self.request.user).save()
        return HttpResponseRedirect(instance.get_absolute_url())
예제 #21
0
    def sendmail(self, template_email_name):
        try:
            membro = Membro.objects.get(email=self.cleaned_data['email'])
        except Membro.DoesNotExist:
            membro = Membro.objects.get(cpf=self.cleaned_data['cpf'])

        if not membro.status_email in ('S', 'O'):
            sendmail(
                subject=u'Atualização de Cadastro.',
                to=[
                    membro.email,
                ],
                template=template_email_name,
                params={
                    'membro':
                    membro,
                    'link':
                    u'%s%s' %
                    (settings.SITE_HOST, membro.get_absolute_update_url()),
                },
            )
예제 #22
0
def enviar_notificacao_emails_topico_proposta(sender, instance, created, raw, using, *args, **kwargs):
    def splip_emails(emails, ite=50):
        ini = 0
        for i in range(ite, len(emails), ite):
            yield emails[ini:i]
            ini = i
        if len(emails) > ini:
            yield emails[ini:len(emails)]

    if instance.escopo == 'N':
        ouvintes = TopicoOuvinte.objects.all().exclude(ouvinte=instance.autor).exclude(notificacao='N')
    elif instance.escopo == 'L':
        ouvintes = instance.topico.topicoouvinte_set.exclude(ouvinte=instance.autor).filter(notificacao__in=('P', 'I', 'V'))

    emails_list = list(set(ouvintes.filter(ouvinte__membro__status_email='A').values_list('ouvinte__email', flat=True).distinct()))
    for emails in splip_emails(emails_list):
        if instance.propostaopcao_set.exists():
            sendmail(
                subject=u'Nova Enquete iniciada no tópico %s do grupo %s' % (instance.topico, instance.topico.grupo),
                bcc=emails,
                template='forum/emails/notificacao-enquete.html',
                params={
                    'conversa': instance,
                    'host': settings.SITE_HOST,
                },
            )
        else:
            sendmail(
                subject=u'Nova Proposta iniciada no tópico %s do grupo %s' % (instance.topico, instance.topico.grupo),
                bcc=emails,
                template='forum/emails/notificacao-proposta.html',
                params={
                    'conversa': instance,
                    'host': settings.SITE_HOST,
                },
            )
    ouvintes.update(dtnotificacao = datetime.now())
예제 #23
0
    def save(self, *args, **kwargs):

        super(Receita, self).save(*args, **kwargs)
        if self.dtpgto:
            #Se houver dtpgto, gravar o depósito na conta indicada
            if not Deposito.objects.filter(receita=self):
                deposito = Deposito(
                    receita=self,
                    conta=self.conta,
                    tipo='D',
                    dt=self.dtpgto,
                    valor=self.valor,
                    referencia=self.nota[:50],
                )
                deposito.save()
                user = User.objects.get_or_create(username="******")[0]
                LogEntry.objects.log_action(
                    user_id = user.pk,
                    content_type_id = ContentType.objects.get_for_model(deposito).pk,
                    object_id = deposito.pk,
                    object_repr = u"%s" % deposito,
                    action_flag = ADDITION,
                    change_message = u'Depósito criado pela Receita.'
                )
            else:
                Deposito.objects.filter(receita=self).update(
                    conta=self.conta,
                    dt=self.dtpgto,
                    valor=self.valor,
                    referencia=self.nota[:50],
                )

            if nvl(self.notificado,False) == False:
                if self.colaborador and not self.colaborador.status_email in ('S', 'O'):
                    sendmail(
                        subject=u'Pagamento Identificado!',
                        to=[self.colaborador.email, ],
                        #bcc=list(User.objects.filter(groups__name=u'Financeiro').values_list('email', flat=True)),
                        template='emails/pagamento-identificado.html',
                        params={'receita': self,},
                    )
                    self.notificado = True
                    super(Receita, self).save(*args, **kwargs)

        if self.colaborador and self.dtpgto:
            prox_data = None
            if self.colaborador.contrib_prox_pgto == None:
                prox_data = self.dtpgto
            else:
                if self.colaborador.contrib_prox_pgto > self.dtpgto:
                    prox_data = None
                else:
                    prox_data = self.colaborador.contrib_prox_pgto

            if prox_data:
                if self.colaborador.contrib_tipo in ('1','3','6'):
                    prox_data = prox_data + relativedelta(months=int(self.colaborador.contrib_tipo))
                else:
                    prox_data = prox_data + relativedelta(year=self.dtpgto.year+1)

                self.colaborador.contrib_prox_pgto = prox_data
                self.colaborador.save()
                # Log do membro
                user = User.objects.get_or_create(username="******")[0]
                LogEntry.objects.log_action(
                            user_id = user.pk,
                            content_type_id = ContentType.objects.get_for_model(self.colaborador).pk,
                            object_id = self.colaborador.pk,
                            object_repr = u"%s" % self.colaborador,
                            action_flag = CHANGE,
                            change_message = u'A data do Próximo Pagamento foi alterada para: %s' %prox_data
                )