from django.contrib.auth.models import User from django.core.mail import EmailMultiAlternatives from django.db.models.signals import post_save from django.dispatch import receiver from django_rest_passwordreset.signals import reset_password_token_created from django.template.loader import render_to_string from django.urls import reverse from core.models.profile import Profile # @receiver(post_save, sender=User) # def create_related_profile(sender, instance, created, *args, **kwargs): # # Notice that we're checking for `created` here. We only want to do this # # the first time the `User` instance is created. If the save that caused # # this signal to be run was an update action, we know the user already # # has a profile. # if instance and created: # print(instance,created) # instance.profile = Profile.objects.create(user=instance) @receiver(reset_password_token_created) def password_reset_token_created(sender, instance, reset_password_token, *args, **kwargs): # send an e-mail to the user context = { 'current_user': reset_password_token.user, 'username': reset_password_token.user.username, 'email': reset_password_token.user.email, 'reset_password_url': "{}?token={}".format( instance.request.build_absolute_uri(reverse('password_reset:reset-password-confirm')), reset_password_token.key) } # render email text email_html_message = render_to_string('email/user_reset_password.html', context) email_plaintext_message = render_to_string('email/user_reset_password.txt', context) # email_plaintext_message = "{}?token={}".format(reverse('password_reset:reset-password-request'), reset_password_token.key) msg = EmailMultiAlternatives( # title: "Password Reset for {title}".format(title="Some website title"), # message: email_plaintext_message, # from: "noreply@somehost.local", # to: [reset_password_token.user.email] ) msg.attach_alternative(email_html_message, "text/html") msg.send()