ConceptPortal-public/rsconcept/backend/apps/users/signals.py
IRBorisov 1e7b6f5c7a Revert "Try change mail server"
This reverts commit 33722727f0.
2024-02-26 14:09:13 +03:00

39 lines
1.4 KiB
Python

''' Signals: user events. '''
from django.core.mail import send_mail
from django.dispatch import receiver
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django_rest_passwordreset.signals import reset_password_token_created # type: ignore
_EMAIL_NOREPLY = 'noreply.portal@yandex.ru'
_EMAIL_SUBJECT = 'Восстановление пароля КонцептПортал'
_EMAIL_TEMPLATE = 'password_reset_email.html'
_RECOVERY_URL = 'https://portal.acconcept.ru/password-change'
@receiver(reset_password_token_created)
def password_reset_token_created(sender, instance, reset_password_token, *args, **kwargs):
'''
Handles password reset tokens
When a token is created, an e-mail needs to be sent to the user
'''
context = {
'current_user': reset_password_token.user,
'username': reset_password_token.user.username,
'first_name': reset_password_token.user.first_name,
'email': reset_password_token.user.email,
'reset_password_url': f'{_RECOVERY_URL}?token={reset_password_token.key}'
}
email_html_message = render_to_string(_EMAIL_TEMPLATE, context)
email_plaintext_message = strip_tags(email_html_message)
send_mail(
subject=_EMAIL_SUBJECT,
message=email_plaintext_message,
from_email=_EMAIL_NOREPLY,
recipient_list=[context['email']],
html_message=email_html_message,
fail_silently=False
)