from django.utils import timezone from users.models import Player tracking = False def get_ip(request): x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR") if x_forwarded_for: ip = x_forwarded_for.split(",")[-1].strip() else: ip = request.META.get("REMOTE_ADDR") return ip # Create a Player object for a User def init_player(request, user): if not user.is_authenticated: return player = Player.objects.filter(user=user).first() if player: return ip = get_ip(request=request) player = Player(user=user, creationIP=ip, latestIP=ip) player.save() # Update activity timestamp and IP def tag_player(request, user=None): if not tracking: return user = user or request.user if not user.is_authenticated: return player = Player.objects.filter(user=request.user).first() if not player: init_player(request=request, user=user) player.latestActivity = timezone.now() player.latestIP = get_ip(request=request) player.save()