def notify_precio_anuncio_baja(obj, old_precio): """Notifica de una bajada de precio en un anuncio. Notifica a los usuarios que tienen el anuncio añadido en favoritos de la bajada de precio. Args: obj (Anuncio): Objeto Anuncio. old_precio (Decimal): Precio anterior. """ site = Site.objects.get_current() url_anuncio = '{}://{}{}'.format( settings.PROTOCOL, site.domain, reverse('anuncios:details', kwargs={'pk': obj.pk})) context = { 'site_name': site.name, 'anuncio_title': obj.get_title, 'url_anuncio': url_anuncio, 'new_precio': obj.precio, 'old_precio': old_precio, 'currency': obj.get_currency_display() } recipients = User.objects.filter( user_options__notify_precio_anuncio_baja=True, favorites_user__anuncios__pk=obj.pk).values('email') recipients = [u['email'] for u in recipients] subject = 'Se ha rebajado de precio un anuncio en {}'.format(site.name) send_templated_mail( subject=subject, from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=recipients, context=context, template_text='anuncios/emails/notify_precio_anuncio_baja.txt')
def _send_article_suscribers(self): """Enviá un email a todos los que estén suscritos.""" site = Site.objects.get_current() site_domain = site.domain link_article = '{}{}'.format(site_domain, self.get_absolute_url()) subject = 'Nuevo articulo en {}'.format(site_domain), template_text = 'blog/emails/article_suscribed.txt' from_email = settings.DEFAULT_FROM_EMAIL for signed in list(ArticleSubscribe.objects.all()): link_unsigned = '{}{}'.format( site_domain, reverse( 'blog:article_suscriber_unregister', kwargs={'token_unsigned': signed.token_unsigned} ) ) context = { 'site_domain': site_domain, 'link_article': link_article, 'link_unsigned': link_unsigned } send_templated_mail( subject=subject, from_email=from_email, recipients=[signed.email], context=context, template_text=template_text )
def form_valid(self, form): """Si el form es valido, enviar el email de recomendación.""" current_site = get_current_site(self.request) recipients = [form.cleaned_data.get('email_to')] from_email = form.cleaned_data.get('from_email') body = form.cleaned_data.get('body') link_anuncio = get_full_path(self.request, 'anuncios:details', pk=self.anuncio.pk) context = { 'from_email': from_email, 'body': body, 'link_anuncio': link_anuncio, 'site_name': current_site.name, 'site_domain': current_site.domain } send_templated_mail(subject='Recomendación de un anuncio en {}'.format( current_site.name), from_email=from_email, recipients=recipients, context=context, template_text='recommend/emails/recommend.txt', reply_to=[from_email]) msg_success = 'Se ha enviado con éxito el mensaje' messages.success(self.request, msg_success) return redirect( reverse('anuncios:details', kwargs={'pk': self.anuncio.pk}))
def _notify(self): """Notifica al owner y superuser que se ha creado el recurso.""" resource = self.object site = get_current_site(self.request) context = { 'site_name': site.name, 'user_name': resource.owner.username, 'resource_title': resource.title, 'resource_message': resource.message } subject = 'Se ha creado el recurso {resource}'.format( resource=resource.title) # Notificar a los ADMINS. send_templated_mail( subject=subject, from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=settings.GROUP_EMAILS['ADMINS'], context=context, template_text= 'resources/emails/notify_quick_resource_superuser_create.txt') # Notificar al owner. send_templated_mail( subject=subject, from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[resource.owner.email], context=context, template_text= 'resources/emails/notify_quick_resource_owner_create.txt')
def form_valid(self, form): """Si el form es valido, mandar el email al recipient.""" resource = Resource.objects.get(slug=self.kwargs.get('slug')) site = Site.objects.get_current() from_email = form.cleaned_data.get('from_email') recipients = [form.cleaned_data.get('recipient_email')] message = form.cleaned_data.get('message') subject = 'Recomendación de un recurso en {}'.format(site.name) resource_link = get_full_path( self.request, 'resources:details', slug=resource.slug ) context = { 'site_name': site.name, 'resource_title': resource.title, 'from_email': from_email, 'message': message, 'resource_link': resource_link } send_templated_mail( subject=subject, from_email=from_email, recipients=recipients, context=context, template_text='recommend/emails/resource.txt' ) return super().form_valid(form)
def _notify(self, resource_id): """Notifica al owner del recurso y a los ADMINS que el link lo han marcado como roto. """ resource = Resource.objects.get(pk=resource_id) resource_url = get_full_path( self.request, 'resources:details', slug=resource.slug ) site = Site.objects.get_current() context = { 'resource_title': resource.title, 'resource_url': resource_url, 'site_name': site.name } recipients = settings.GROUP_EMAILS['ADMINS'] recipients += (resource.owner.username, resource.owner.email) send_templated_mail( subject='Se ha marcado un enlace como roto', from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=recipients, context=context, template_text='resources/emails/notify_marked_resource_broken.txt' )
def _send_confirm_email_for_validate(self, token, new_email): """Envía un email para la confirmación del nuevo email con un token.""" current_site = get_current_site(self.request) url_validate_token = get_full_path( self.request, 'authentication:email_update_validate', token=token) context = { 'url_validate_token': url_validate_token, 'site_name': current_site.name } send_templated_mail( subject=_('Confirmación cambio de email'), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[new_email], context=context, template_text='authentication/emails/email_update_confirm.txt')
def _send_mails(anuncio, alerts, request): """Enviá un email a los usuarios. Enviá el email a todos los usuarios que tienen un filtro coincidente al anuncio recién creado. Args: alerts (QuerySet): Resultados de la búsqueda. request (HttpRequest): Objeto request. Returns: int: 1 si se manda el email, 0 en caso contrario. """ current_site = get_current_site(request) recipients = set([alert.owner.email for alert in alerts]) anuncio_url = get_full_path(request, 'anuncios:details', pk=anuncio.pk) alerts_url = get_full_path(request, 'accounts:profile') return send_templated_mail( subject='Anuncio que puede interesarte desde {}'.format( current_site.name), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=list(recipients), context={ 'site_name': current_site.name, 'anuncio': anuncio, 'anuncio_url': anuncio_url, 'alerts_url': alerts_url }, template_text='alerts/emails/alert_anuncio.txt')
def notify_mail_account_premium(request, payment_ipn): """Notifica por email que el proceso se ha completado.""" current_site = get_current_site(request) subject = 'Confirmación de premium en {}'.format(current_site.name) from_email = settings.GROUP_EMAILS['NO-REPLY'] recipients = [payment_ipn.user.email] template_text = 'payments/mails/notify_premium.txt' context = { 'profile_url': get_full_path(request, 'accounts:profile'), 'site_name': current_site.name, 'payment': payment_ipn } send_templated_mail(subject=subject, from_email=from_email, recipients=recipients, context=context, template_text=template_text)
def notify_new_pmessage(request, message): """Notifica a un recipient de un nuevo mensaje privado.""" parent = message.parent if message.parent else message enlace_message = get_full_path(request, 'pmessages:thread', pk=parent.pk) subject = 'Te han enviado un mensaje privado' from_email = settings.GROUP_EMAILS['NO-REPLY'] recipients = [message.recipient.email] template_text = 'pmessages/emails/notify_new_pmessage.txt' context = { 'site_name': get_current_site(request).name, 'enlace_message': enlace_message } send_templated_mail(subject=subject, from_email=from_email, recipients=recipients, context=context, template_text=template_text)
def _send_confirm_email_for_validate(self, token, new_email): """Enviá un email para la confirmación del nuevo email con un token.""" current_site = get_current_site(self.request) url_validate_token = get_full_path( self.request, 'authentication:email_update_validate', token=token ) context = { 'url_validate_token': url_validate_token, 'site_name': current_site.name } send_templated_mail( subject=_('Confirmación cambio de email'), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[new_email], context=context, template_text='authentication/emails/email_update_confirm.txt' )
def _send_email_with_token(self): """Envía un email con token para terminar proceso de registro.""" current_site = get_current_site(self.request) site_name = current_site.name url_validate_token = get_full_path(self.request, 'authentication:validate_token', token=self.object.token) context = { 'username': self.object.username, 'email': self.object.email, 'site_name': site_name, 'url_validate_token': url_validate_token } send_templated_mail( subject=_(f'Validación de email en {site_name}'), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[self.object.email], context=context, template_text='authentication/emails/register_success.txt')
def notify_new_contact_message(request, contact): """Envía una notificación del formulario de contacto.""" site = get_current_site(request) site_name = site.name subject = f'Nuevo email de contacto en {site_name}' context = { 'is_register': contact.is_register, 'subject': contact.subject, 'email': contact.email, 'text': contact.text, 'site_name': site_name, 'callback_url': get_full_path(request, 'contact:details', pk=contact.pk) } send_templated_mail(subject=subject, from_email=settings.DEFAULT_FROM_EMAIL, recipients=settings.GROUP_EMAILS['CONTACTS'], context=context, template_text='contact/emails/contact.txt')
def _notify(self, resource_id): """Notifica a la administración que un resource puede ser spam.""" resource = Resource.objects.get(pk=resource_id) resource_url = get_full_path( self.request, 'resources:details', slug=resource.slug ) site = Site.objects.get_current() context = { 'resource_title': resource.title, 'resource_url': resource_url, 'site_name': site.name } send_templated_mail( subject='Se ha marcado un recurso como SPAM', from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=settings.GROUP_EMAILS['ADMINS'], context=context, template_text='resources/emails/notify_marked_resource_spam.txt' )
def _send_notify_mail(self): code = self.object.code user_id = self.request.POST['to_user'] payment_promo = self.request.POST['payment_promo'] user = UserModel.objects.get(pk=user_id) site = get_current_site(self.request) promotion_list = {k: v for k, v in PaymentIpn.PAYMENT_CHOICES} context = { 'code': code, 'user': user, 'site_name': site.name, 'promotion': promotion_list.get(payment_promo), 'promo_expire_days': self.object.expire_at, 'link_profile': get_full_path(self.request, 'accounts:profile') } send_templated_mail( subject='Código de promoción en {}'.format(site.name), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[user.email], context=context, template_text='promos/emails/send_code.txt' )
def _send_email_with_token(self): """Envía un email con token para terminar proceso de registro.""" current_site = get_current_site(self.request) site_name = current_site.name url_validate_token = get_full_path( self.request, 'authentication:validate_token', token=self.object.token ) context = { 'username': self.object.username, 'email': self.object.email, 'site_name': site_name, 'url_validate_token': url_validate_token } send_templated_mail( subject=_('Validación de email en {}').format(site_name), from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[self.object.email], context=context, template_text='authentication/emails/register_success.txt' )
def _send_email_notification(self, form): """Envia un email de notificación.""" subject = form.cleaned_data['subject'] message = form.cleaned_data['message'] user_email = form.cleaned_data['email'] username = form.cleaned_data['username'] is_register = form.cleaned_data['is_register'] link_message = get_full_path(self.request, 'contact:list') context = { 'register_text': 'registrado' if is_register else 'no registrado', 'username': username, 'user_email': user_email, 'subject': subject, 'message': message, 'link_message': link_message } send_templated_mail(subject=subject, from_email=user_email, recipients=settings.GROUP_EMAILS['CONTACTS'], context=context, template_text='contact/emails/contact.txt', reply_to=[user_email])
def _notify_admins(self): """Notifica a los administradores del nuevo recurso.""" resource = self.object site = get_current_site(self.request) context = { 'site_name': site.name, 'title': resource.title, 'resource_link': get_full_path(self.request, 'resources:details', slug=resource.slug), 'link_resource_admin': '{}/admin/resources/resource/{}/change/'.format( get_http_host(self.request), resource.pk) } send_templated_mail( subject='Se ha creado un nuevo recurso en {}'.format(site.name), from_email=settings.DEFAULT_FROM_EMAIL, recipients=settings.GROUP_EMAILS['ADMINS'], context=context, template_text='resources/emails/notify_admins_new_resource.txt')
def _send_article_suscribers(self): """Enviá un email a todos los que estén suscritos.""" site = Site.objects.get_current() site_domain = site.domain link_article = '{}{}'.format(site_domain, self.get_absolute_url()) subject = 'Nuevo articulo en {}'.format(site_domain), template_text = 'blog/emails/article_suscribed.txt' from_email = settings.DEFAULT_FROM_EMAIL for signed in list(ArticleSubscribe.objects.all()): link_unsigned = '{}{}'.format( site_domain, reverse('blog:article_suscriber_unregister', kwargs={'token_unsigned': signed.token_unsigned})) context = { 'site_domain': site_domain, 'link_article': link_article, 'link_unsigned': link_unsigned } send_templated_mail(subject=subject, from_email=from_email, recipients=[signed.email], context=context, template_text=template_text)
def _notify(self): """Notifica al owner que se ha aprobado el recurso.""" resource = self.object site = get_current_site(self.request) context = { 'site_name': site.name, 'user_name': resource.owner.username, 'resource_title': resource.title, 'resource_link': get_full_path(self.request, 'resources:details', slug=resource.slug) } subject = 'Se ha publicado el recurso {resource}'.format( resource=resource.title) send_templated_mail( subject=subject, from_email=settings.GROUP_EMAILS['NO-REPLY'], recipients=[resource.owner.email], context=context, template_text='resources/emails/notify_quick_resource_approve.txt')