tracker.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.utils import timezone
  2. from misago.users.models import Online
  3. def mute_tracker(request):
  4. request._misago_online_tracker = None
  5. def start_tracking(request, user):
  6. online_tracker = Online.objects.create(
  7. user=user,
  8. current_ip=request.user_ip,
  9. is_visible_on_index=user.rank.is_on_index
  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. rank_visible_on_index = request.user.rank.is_on_index
  17. if tracker.is_visible_on_index != rank_visible_on_index:
  18. tracker.is_visible_on_index = rank_visible_on_index
  19. tracker.save(update_fields=[
  20. 'last_click', 'current_ip', 'is_visible_on_index'
  21. ])
  22. else:
  23. tracker.save(update_fields=['last_click', 'current_ip'])
  24. def stop_tracking(request, tracker):
  25. user = tracker.user
  26. user.last_login = tracker.last_click
  27. user.last_ip = tracker.current_ip
  28. user.save(update_fields=['last_login', 'last_ip'])
  29. tracker.delete()