tracker.py 1021 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from rest_framework.request import Request
  2. from django.utils import timezone
  3. from misago.users.models import Online
  4. def mute_tracker(request):
  5. request._misago_online_tracker = None
  6. def start_tracking(request, user):
  7. online_tracker = Online.objects.create(
  8. user=user,
  9. current_ip=request.user_ip,
  10. )
  11. request.user.online_tracker = online_tracker
  12. request._misago_online_tracker = online_tracker
  13. def update_tracker(request, tracker):
  14. tracker.current_ip = request.user_ip
  15. tracker.last_click = timezone.now()
  16. tracker.save(update_fields=['last_click', 'current_ip'])
  17. def stop_tracking(request, tracker):
  18. user = tracker.user
  19. user.last_login = tracker.last_click
  20. user.last_ip = tracker.current_ip
  21. user.save(update_fields=['last_login', 'last_ip'])
  22. tracker.delete()
  23. def clear_tracking(request):
  24. if isinstance(request, Request):
  25. request = request._request # Fugly unwrap restframework's request
  26. request._misago_online_tracker = None