|
@@ -95,13 +95,8 @@ class ViewBase(ForumMixin, ThreadMixin, PostMixin, View):
|
|
return render(request, template, context)
|
|
return render(request, template, context)
|
|
|
|
|
|
|
|
|
|
-class ForumView(ViewBase):
|
|
|
|
- """
|
|
|
|
- Basic view for threads lists
|
|
|
|
- """
|
|
|
|
- template = 'list.html'
|
|
|
|
-
|
|
|
|
- def get_threads(self, request, forum, kwargs):
|
|
|
|
|
|
+class ThreadsView(ViewBase):
|
|
|
|
+ def get_threads(self, request, kwargs):
|
|
queryset = self.get_threads_queryset(request, forum)
|
|
queryset = self.get_threads_queryset(request, forum)
|
|
|
|
|
|
threads_qs = queryset.filter(weight__lt=ANNOUNCEMENT)
|
|
threads_qs = queryset.filter(weight__lt=ANNOUNCEMENT)
|
|
@@ -120,10 +115,10 @@ class ForumView(ViewBase):
|
|
|
|
|
|
return page, threads
|
|
return page, threads
|
|
|
|
|
|
- def get_threads_queryset(self, request, forum):
|
|
|
|
|
|
+ def get_threads_queryset(self, request):
|
|
return forum.thread_set.all().order_by('-last_post_on')
|
|
return forum.thread_set.all().order_by('-last_post_on')
|
|
|
|
|
|
- def add_threads_reads(self, request, forum, threads):
|
|
|
|
|
|
+ def add_threads_reads(self, request, threads):
|
|
for thread in threads:
|
|
for thread in threads:
|
|
thread.is_new = False
|
|
thread.is_new = False
|
|
|
|
|
|
@@ -131,12 +126,41 @@ class ForumView(ViewBase):
|
|
for thread in threads:
|
|
for thread in threads:
|
|
thread.is_new = random.choice((True, False))
|
|
thread.is_new = random.choice((True, False))
|
|
|
|
|
|
|
|
+
|
|
|
|
+class ForumView(ThreadsView):
|
|
|
|
+ """
|
|
|
|
+ Basic view for threads lists
|
|
|
|
+ """
|
|
|
|
+ template = 'list.html'
|
|
|
|
+
|
|
|
|
+ def get_threads(self, request, forum, kwargs):
|
|
|
|
+ queryset = self.get_threads_queryset(request, forum)
|
|
|
|
+
|
|
|
|
+ threads_qs = queryset.filter(weight__lt=ANNOUNCEMENT)
|
|
|
|
+ threads_qs = threads_qs.order_by('-weight', '-last_post_on')
|
|
|
|
+
|
|
|
|
+ page = paginate(threads_qs, kwargs.get('page', 0), 30, 10)
|
|
|
|
+ threads = []
|
|
|
|
+
|
|
|
|
+ for announcement in queryset.filter(weight=ANNOUNCEMENT):
|
|
|
|
+ threads.append(announcement)
|
|
|
|
+ for thread in page.object_list:
|
|
|
|
+ threads.append(thread)
|
|
|
|
+
|
|
|
|
+ for thread in threads:
|
|
|
|
+ thread.forum = forum
|
|
|
|
+
|
|
|
|
+ return page, threads
|
|
|
|
+
|
|
|
|
+ def get_threads_queryset(self, request, forum):
|
|
|
|
+ return forum.thread_set.all().order_by('-last_post_on')
|
|
|
|
+
|
|
def dispatch(self, request, *args, **kwargs):
|
|
def dispatch(self, request, *args, **kwargs):
|
|
forum = self.get_forum(request, **kwargs)
|
|
forum = self.get_forum(request, **kwargs)
|
|
forum.subforums = get_forums_list(request.user, forum)
|
|
forum.subforums = get_forums_list(request.user, forum)
|
|
|
|
|
|
page, threads = self.get_threads(request, forum, kwargs)
|
|
page, threads = self.get_threads(request, forum, kwargs)
|
|
- self.add_threads_reads(request, forum, threads)
|
|
|
|
|
|
+ self.add_threads_reads(request, threads)
|
|
|
|
|
|
return self.render(request, {
|
|
return self.render(request, {
|
|
'forum': forum,
|
|
'forum': forum,
|