tracker.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django.utils import timezone
  2. from misago.users.models import Online
  3. from misago.users.online.ranks import clear_ranks_online_cache
  4. def start_tracking(request, user):
  5. online_tracker = Online.objects.create(
  6. user=user,
  7. current_ip=request._misago_real_ip,
  8. is_visible_on_index=user.rank.is_on_index
  9. )
  10. if online_tracker.is_visible_on_index:
  11. clear_ranks_online_cache()
  12. request.user.online_tracker = online_tracker
  13. request._misago_online_tracker = online_tracker
  14. def update_tracker(request, tracker):
  15. tracker.current_ip = request._misago_real_ip
  16. tracker.last_click = timezone.now()
  17. rank_visible_on_index = request.user.rank.is_on_index
  18. if tracker.is_visible_on_index != rank_visible_on_index:
  19. tracker.is_visible_on_index = rank_visible_on_index
  20. tracker.save(update_fields=[
  21. 'last_click', 'current_ip', 'is_visible_on_index'
  22. ])
  23. clear_ranks_online_cache()
  24. else:
  25. tracker.save(update_fields=['last_click', 'current_ip'])
  26. def stop_tracking(request, tracker):
  27. user = tracker.user
  28. user.last_login = tracker.last_click
  29. user.last_ip = tracker.current_ip
  30. user.save(update_fields=['last_login', 'last_ip'])
  31. if tracker.is_visible_on_index:
  32. clear_ranks_online_cache()
  33. tracker.delete()