def test_index(self):
        """index contains forums list"""
        response = self.client.get(reverse('misago:index'))

        for node in get_forums_list(self.user):
            self.assertIn(node.name, response.content)
            if node.level > 1:
                self.assertIn(node.get_absolute_url(), response.content)
    def test_index_no_perms(self):
        """index contains no visible forums"""
        override_acl(self.user, {'visible_forums': []})
        response = self.client.get(reverse('misago:index'))

        for node in get_forums_list(self.user):
            self.assertNotIn(node.name, response.content)
            if node.level > 1:
                self.assertNotIn(node.get_absolute_url(), response.content)
Exemple #3
0
def category(request, forum):
    allow_browse_forum(request.user, forum)
    if forum.level == 1:
        return dj_redirect(forum.get_absolute_url())
    forums = get_forums_list(request.user, forum)

    return render(request, 'misago/forums/category.html', {
        'category': forum,
        'forums': forums,
        'path': get_forum_path(forum),
    })
Exemple #4
0
    def dispatch(self, request, *args, **kwargs):
        forum = self.get_forum(request, **kwargs)
        validate_slug(forum, kwargs['forum_slug'])

        forum.labels = Label.objects.get_forum_labels(forum)

        if forum.lft + 1 < forum.rght:
            forum.subforums = get_forums_list(request.user, forum)
        else:
            forum.subforums = []

        page_number = kwargs.pop('page', None)
        cleaned_kwargs = self.clean_kwargs(request, kwargs)

        link_name = request.resolver_match.view_name

        sorting = self.Sorting(link_name, cleaned_kwargs)
        cleaned_kwargs = sorting.clean_kwargs(cleaned_kwargs)

        filtering = self.Filtering(forum, link_name, cleaned_kwargs)
        cleaned_kwargs = filtering.clean_kwargs(cleaned_kwargs)

        if cleaned_kwargs != kwargs:
            return redirect(link_name, **cleaned_kwargs)

        threads = self.Threads(request.user, forum)
        sorting.sort(threads)
        filtering.filter(threads)

        actions = self.Actions(user=request.user, forum=forum)
        if request.method == 'POST':
            response = actions.handle_post(request, threads.get_queryset())
            if response:
                return response

        return self.render(request, {
            'link_name': link_name,
            'links_params': cleaned_kwargs,

            'forum': forum,
            'path': get_forum_path(forum),

            'threads': threads.list(page_number),
            'threads_count': threads.count(),
            'page': threads.page,
            'paginator': threads.paginator,

            'threads_actions': actions,
            'selected_threads': actions.get_selected_ids(),

            'sorting': sorting,
            'filtering': filtering,
        })
Exemple #5
0
    def dispatch(self, request, *args, **kwargs):
        forum = self.get_forum(request, **kwargs)
        forum.labels = Label.objects.get_forum_labels(forum)

        if forum.lft + 1 < forum.rght:
            forum.subforums = get_forums_list(request.user, forum)
        else:
            forum.subforums = []

        page_number = kwargs.pop('page', None)
        cleaned_kwargs = self.clean_kwargs(request, kwargs)

        sorting = self.Sorting(self.link_name, cleaned_kwargs)
        cleaned_kwargs = sorting.clean_kwargs(cleaned_kwargs)

        filtering = self.Filtering(forum, self.link_name, cleaned_kwargs)
        cleaned_kwargs = filtering.clean_kwargs(cleaned_kwargs)

        if cleaned_kwargs != kwargs:
            return redirect('misago:forum', **cleaned_kwargs)

        threads = self.Threads(request.user, forum)
        sorting.sort(threads)
        filtering.filter(threads)

        return self.render(request, {
            'link_name': self.link_name,
            'links_params': cleaned_kwargs,

            'forum': forum,
            'path': get_forum_path(forum),

            'threads': threads.list(page_number),
            'page': threads.page,
            'paginator': threads.paginator,

            'sorting': sorting,
            'filtering': filtering,
        })
Exemple #6
0
def forum_index(request):
    return render(request, 'misago/index.html', {
        'categories': get_forums_list(request.user),
    })
Exemple #7
0
def forum_index(request):
    return render(
        request,
        "misago/index.html",
        {"categories": get_forums_list(request.user), "ranks_online": get_ranks_online(request.user)},
    )
Exemple #8
0
 def test_get_forum_path(self):
     """get_forums_list returns all children of root nodes"""
     for node in get_forums_list(self.user):
         parent_nodes = len(get_forum_path(node))
         self.assertEqual(parent_nodes, node.level)
Exemple #9
0
 def test_root_forums_list_with_parents(self):
     """get_forums_list returns all children of given node"""
     for i, node in enumerate(get_forums_list(self.user)):
         child_nodes = len(get_forums_list(self.user, node))
         self.assertEqual(child_nodes, len(node.get_descendants()))
Exemple #10
0
 def test_root_forums_list_no_parent(self):
     """get_forums_list returns all children of root nodes"""
     self.assertEqual(len(get_forums_list(self.user)), 3)
Exemple #11
0
def forum_index(request):
    return render(
        request, 'misago/index.html', {
            'categories': get_forums_list(request.user),
            'ranks_online': get_ranks_online(request.user),
        })