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, )
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()
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()
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, }, )
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, }, )
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, }, )
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']} )
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, }, )
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, }, )
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()
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)
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, }, )
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()), }, )
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())
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, } )
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, })
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, }, )
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())
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()), }, )
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())
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 )