mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
37 lines
1.4 KiB
Python
37 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
|
|
)
|