When a user changes their password, I want to send a signal so that I can do some stuff on some models.
How can I create this signal?
I've looked at the post_save
signal for User:
post_save.connect(user_updated, sender=User)
However, there doesn't seem to be anything in there for me to check if the password was changed:
def user_updated(sender, **kwargs):
print(kwargs) # {'created': False, 'raw': False, 'instance': <User: 100002>, 'update_fields': None, 'signal': <django.db.models.signals.ModelSignal object at 0x7ff8862f03c8>, 'using': 'default'}
I also see that there is a password_change_done
auth view, but I'm not sure how I'd use it. https://docs.djangoproject.com/en/1.10/topics/auth/default/#built-in-auth-views
Any ideas?
You could use a pre_save signal.
kwargs['instance']
will contain the updated password and you can get the old password withUser.objects.get(id= user.id).password