Suppose you have the last_seen_on and last_activity_ip fields in your UserProfile user model, here is a simple middleware class that does what you want:
import datetime
class LastSeen(object):
def process_request(self, request):
user = request.user
if not user.is_authenticated(): return None
up = user.get_profile()
up.last_seen_on = datetime.now()
up.last_activity_ip = request.META['REMOTE_ADDR']
up.save()
return None
source
share