models.py 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. from django.db import models
  2. from misago.forums.signals import move_forum_content
  3. from misago.threads.signals import move_thread, merge_thread
  4. class ThreadWatch(models.Model):
  5. user = models.ForeignKey('users.User')
  6. forum = models.ForeignKey('forums.Forum')
  7. thread = models.ForeignKey('threads.Thread')
  8. last_read = models.DateTimeField()
  9. email = models.BooleanField(default=False)
  10. deleted = False
  11. def save(self, *args, **kwargs):
  12. if not self.deleted:
  13. super(ThreadWatch, self).save(*args, **kwargs)
  14. def move_forum_content_handler(sender, **kwargs):
  15. ThreadWatch.objects.filter(forum=sender).update(forum=kwargs['move_to'])
  16. move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_threads_watchers")
  17. def move_thread_handler(sender, **kwargs):
  18. ThreadWatch.objects.filter(forum=sender.forum_id).update(forum=kwargs['move_to'])
  19. move_thread.connect(move_thread_handler, dispatch_uid="move_thread_watchers")
  20. def merge_thread_handler(sender, **kwargs):
  21. ThreadWatch.objects.filter(thread=sender).delete()
  22. merge_thread.connect(merge_thread_handler, dispatch_uid="merge_threads_watchers")