signals.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from django.dispatch import Signal, receiver
  2. from misago.categories.signals import move_category_content
  3. from misago.threads.signals import move_thread, remove_thread_participant
  4. all_read = Signal()
  5. category_read = Signal(providing_args=["category"])
  6. thread_tracked = Signal(providing_args=["thread"])
  7. thread_read = Signal(providing_args=["thread"])
  8. """
  9. Signal handlers
  10. """
  11. @receiver(move_category_content)
  12. def delete_category_tracker(sender, **kwargs):
  13. sender.categoryread_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_read)
  19. def decrease_unread_private_count(sender, **kwargs):
  20. user = sender
  21. thread = kwargs['thread']
  22. if user.pk != thread.starter_id and user.unread_private_threads:
  23. user.unread_private_threads -= 1
  24. user.save(update_fields=['unread_private_threads'])
  25. @receiver(remove_thread_participant)
  26. def remove_private_thread_readtrackers(sender, **kwargs):
  27. user = kwargs['user']
  28. user.threadread_set.filter(thread=sender).delete()