Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. # models.py
  2.  
  3. class Post(models.Model):
  4. title = models.CharField(_('title'), max_length=125)
  5. description = models.TextField(_('description'))
  6. is_read = models.BooleanField(default=False)
  7. publication = models.DateTimeField(_('date published'), auto_now_add=True)
  8. created_at = models.DateTimeField(_('created at'), auto_now_add=True)
  9. blog = models.ForeignKey(Blog, related_name='post',
  10. verbose_name=_('blog'),
  11. on_delete=models.CASCADE)
  12.  
  13. class Meta:
  14. verbose_name = _('post')
  15. verbose_name_plural = _('posts')
  16.  
  17. def __str__(self):
  18. return self.title
  19.  
  20. def get_absolute_url(self):
  21. return reverse('blog:post_detail', kwargs={'id': self.id})
  22.  
  23.  
  24. @receiver(post_save, sender=Post)
  25. def post_created(sender, instance, created, **kwargs):
  26. if created:
  27. blog_title = instance.title
  28. post_url = instance.get_absolute_url()
  29. user_emails = instance.blog.subscriptions.all().values_list(
  30. 'email', flat=True)
  31. for email in user_emails:
  32. django_rq.enqueue(email_notification_subscriber, email,
  33. blog_title, post_url)
  34.  
  35.  
  36. # tasks.py
  37.  
  38. from django.conf import settings
  39. from django.core.mail import send_mail, BadHeaderError
  40. from django_rq import job
  41.  
  42.  
  43. @job
  44. def email_notification_subscriber(email, blog_title, post_url):
  45. try:
  46. subject = 'Новый пост от %s' % blog_title
  47. message = f'''
  48. Блог <{blog_title}> опубликовал новый пост.
  49. Пост доступен по прямой ссылке - {post_url}.
  50. '''
  51. email_from = settings.EMAIL_HOST_USER
  52. email_to = [email]
  53. send_mail(subject, message, email_from, email_to)
  54. return True
  55. except BadHeaderError:
  56. return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement