signals.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.dispatch import receiver, Signal
  2. from misago.forums.signals import move_forum_content
  3. from misago.threads.signals import move_thread
  4. all_read = Signal()
  5. forum_read = Signal(providing_args=["forum"])
  6. thread_tracked = Signal(providing_args=["thread"])
  7. thread_read = Signal(providing_args=["thread"])
  8. """
  9. Signal handlers
  10. """
  11. @receiver(move_forum_content)
  12. def delete_forum_tracker(sender, **kwargs):
  13. sender.forumread_set.all().delete()
  14. sender.threadread_set.all().delete()
  15. @receiver(move_thread)
  16. def delete_thread_tracker(sender, **kwargs):
  17. sender.threadread_set.all().delete()
  18. @receiver(thread_tracked)
  19. def decrease_new_threads_count(sender, **kwargs):
  20. user = sender
  21. thread = kwargs['thread']
  22. user.new_threads.decrease()
  23. @receiver(thread_read)
  24. def decrease_unread_count(sender, **kwargs):
  25. user = sender
  26. thread = kwargs['thread']
  27. user.unread_threads.decrease()
  28. @receiver(all_read)
  29. def zero_unread_counters(sender, **kwargs):
  30. sender.new_threads.set(0)
  31. sender.unread_threads.set(0)