def test_paginate(self): request = self.factory.get('/?page=2') pages, paginator, _ = paginate(self.posts, request, 3) self.assertEqual(pages, 2) request = self.factory.get('/?page=1') _, _, paged_list_name = paginate(self.posts, request, 3) self.assertEqual(paged_list_name.count(), 3)
def show_forum(request, forum_id, full=True): forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() topics = forum.topics.order_by('-sticky', '-updated').select_related() moderator = request.user.is_superuser or\ request.user in forum.moderators.all() to_return = {'categories': Category.objects.all(), 'forum': forum, 'paged_qs': topics, 'posts': forum.post_count, 'topics': forum.topic_count, 'moderator': moderator, } if full: return to_return else: pages, paginator, paged_list_name = paginate(topics, request, forum_settings.FORUM_PAGE_SIZE) to_return.update({'pages': pages, 'paginator': paginator, 'topics': paged_list_name, 'TEMPLATE': 'forum/lofi/forum.html' }) del to_return['paged_qs'] return to_return
def show_topic(request, topic_id, full=True): topic = get_object_or_404(Topic.objects.select_related(), pk=topic_id) if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() Topic.objects.filter(pk=topic.id).update(views=F('views') + 1) last_post = topic.last_post if request.user.is_authenticated(): topic.update_read(request.user) posts = topic.posts.all().select_related() users = set(post.user.id for post in posts) profiles = Profile.objects.filter(user__pk__in=users) profiles = dict((profile.user_id, profile) for profile in profiles) for post in posts: post.user.forum_profile = profiles[post.user.id] if forum_settings.REPUTATION_SUPPORT: replies_list = Reputation.objects.filter(to_user__pk__in=users).values('to_user_id').annotate(Sum('sign')) replies = {} for r in replies_list: replies[r['to_user_id']] = r['sign__sum'] for post in posts: post.user.forum_profile.reply_total = replies.get(post.user.id, 0) initial = {} if request.user.is_authenticated(): initial = {'markup': request.user.forum_profile.markup} form = AddPostForm(topic=topic, initial=initial) moderator = request.user.is_superuser or\ request.user in topic.forum.moderators.all() if request.user.is_authenticated() and request.user in topic.subscribers.all(): subscribed = True else: subscribed = False highlight_word = request.GET.get('hl', '') if full: return {'categories': Category.objects.all(), 'topic': topic, 'last_post': last_post, 'form': form, 'moderator': moderator, 'subscribed': subscribed, 'paged_qs': posts, 'highlight_word': highlight_word, } else: pages, paginator, paged_list_name = paginate(posts, request, forum_settings.TOPIC_PAGE_SIZE) return {'categories': Category.objects.all(), 'topic': topic, 'pages': pages, 'paginator': paginator, 'posts': paged_list_name, 'TEMPLATE': 'forum/lofi/topic.html' }