forumreadmodel.py 969 B

123456789101112131415161718192021222324252627
  1. from datetime import timedelta
  2. from django.conf import settings
  3. from django.db import models
  4. from django.utils import timezone
  5. from misago.signals import move_forum_content
  6. class ForumRead(models.Model):
  7. user = models.ForeignKey('User')
  8. forum = models.ForeignKey('Forum')
  9. updated = models.DateTimeField()
  10. cleared = models.DateTimeField()
  11. class Meta:
  12. app_label = 'misago'
  13. def get_threads(self):
  14. threads = {}
  15. for thread in ThreadRecord.objects.filter(user=self.user, forum=self.forum, updated__gte=(timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH))):
  16. threads[thread.thread_id] = thread
  17. return threads
  18. def move_forum_content_handler(sender, **kwargs):
  19. ForumRead.objects.filter(forum=sender).delete()
  20. ForumRead.objects.filter(forum=kwargs['move_to']).delete()
  21. move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_reads")