forumreadmodel.py 1007 B

1234567891011121314151617181920212223242526272829
  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. from misago.models import ThreadRead
  15. threads = {}
  16. for thread in ThreadRead.objects.filter(user_id=self.user_id, forum_id=self.forum_id, updated__gte=(timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH))):
  17. threads[thread.thread_id] = thread
  18. return threads
  19. def move_forum_content_handler(sender, **kwargs):
  20. ForumRead.objects.filter(forum=sender).delete()
  21. ForumRead.objects.filter(forum=kwargs['move_to']).delete()
  22. move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_reads")