from datetime import timedelta
from django.conf import settings
from django.db import models
from django.utils import timezone
from misago.signals import move_forum_content

class ForumRead(models.Model):
    user = models.ForeignKey('User')
    forum = models.ForeignKey('Forum')
    updated = models.DateTimeField()
    cleared = models.DateTimeField()

    class Meta:
        app_label = 'misago'

    def get_threads(self):
        from misago.models import ThreadRead

        threads = {}
        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))).iterator():
            threads[thread.thread_id] = thread
        return threads


def move_forum_content_handler(sender, **kwargs):
    ForumRead.objects.filter(forum=sender).delete()
    ForumRead.objects.filter(forum=kwargs['move_to']).delete()

move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_reads")