@robocop45

Является ли данная реализация оповещений по email костылем?

Задача: к посту добавляется комментарий - автору поста приходит сообщение на email
реализовал я через signals
@receiver(post_save, sender = Answer)
def send_email_after_answer( **kwargs):
    instance = kwargs['instance']
    send_mail(
        'subject',
        'Here is the message',
        settings.EMAIL_HOST_USER,
        [f'{instance.post.author.email}'], #post - связывает модель комментариев и поста, далее у автора поста берем email и подставляем
        fail_silently=False,
    )

Когда я начинал разбираться в этом вопросе, гуглил решения и все не то. В решениях было много ненужных строк кода, и из-за этого появилось такое ощущение что получился костыль, хотя работает все полностью исправно.

В итоге, по вашему мнению, является ли этот код нормальным для данной задачи? И как бы вы это реализовали? Всем спасибо!
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
Код состоит буквально из вызова одной функции - тут проверять нечего.

Не нравится только строка instance = kwargs['instance'].
Можно ли как-то убрать такое, чтобы тебе в функцию сразу только instance и приходил?
Второе: [f'{instance.post.author.email}']
Обязательно ли заворачивать в f''? email не является строкой?

В остальном по классике: подумай над гарантиями доставки (at least/most once) и транзакционностью (что сообщение не будет отправлено, если комментарий не сохранён и наоборот).
В том числе подумай, нужно ли это тебе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы