from django.shortcuts import get_object_or_404

from misago.categories import THREADS_ROOT_NAME
from misago.categories.models import Category
from misago.categories.permissions import allow_browse_category, allow_see_category
from misago.core.shortcuts import get_int_or_404
from misago.readtracker.categoriestracker import read_category
from misago.threads.threadtypes import trees_map


def read_threads(user, pk):
    user.lock()

    category_id = get_int_or_404(pk)
    threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)

    category = get_object_or_404(
        Category,
        id=category_id,
        tree_id=threads_tree_id,
    )

    if category.level:
        allow_see_category(user, category)
        allow_browse_category(user, category)

    read_category(user, category)


def read_private_threads(user):
    category = Category.objects.private_threads()
    read_category(user, category)

    user.sync_unread_private_threads = False
    user.unread_private_threads = 0
    user.save(update_fields=['sync_unread_private_threads', 'unread_private_threads'])