tracker.py 866 B

123456789101112131415161718192021222324252627282930313233343536
  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(user=user)
  8. request.user.online_tracker = online_tracker
  9. request._misago_online_tracker = online_tracker
  10. def update_tracker(request, tracker):
  11. tracker.last_click = timezone.now()
  12. tracker.save(update_fields=['last_click'])
  13. def stop_tracking(request, tracker):
  14. user = tracker.user
  15. user.last_login = tracker.last_click
  16. user.save(update_fields=['last_login'])
  17. tracker.delete()
  18. def clear_tracking(request):
  19. if isinstance(request, Request):
  20. request = request._request # Fugly unwrap restframework's request
  21. request._misago_online_tracker = None