Reputation: 311
I have following code:
@receiver(user_logged_in)
def user_logged_in_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
AuditEntry.objects.create(action='User logged in', ip=ip, username=user.username)
It works great.
In views.py I have a custom receiver:
@receiver(pre_save, sender=User)
def user_updated(sender, **kwargs):
user = kwargs.get('instance', None)
ip = request.META['REMOTE_ADDR']
if user:
new_password = user.password
try:
old_password = User.objects.get(pk=user.pk).password
except User.DoesNotExist:
old_password = None
if new_password != old_password:
AuditEntry.objects.create(action='Password has changed', ip="127.0.0.1", username=user.username)
For sure it falls with "no request found" error.
I can't figure out how to extract IP.
Thank you.
Or maybe I am overengineering my code? All I need is to create AuditEntry with parameters after User model has changed.
Upvotes: 0
Views: 109
Reputation: 4497
To me, It looks like you forgot the request param in your function.
You need to pass the request param.
Upvotes: 1