views.py 1.1 KB

12345678910111213141516171819202122
  1. from misago.apps.forumbase.list import ThreadsListBaseView
  2. from misago.models import Forum, Thread
  3. from misago.readstrackers import ThreadsTracker
  4. from misago.utils.pagination import make_pagination
  5. from misago.apps.announcements.mixins import TypeMixin
  6. class ThreadsListView(ThreadsListBaseView, TypeMixin):
  7. def fetch_forum(self):
  8. self.forum = Forum.objects.get(special='announcements')
  9. def fetch_threads(self):
  10. queryset = self.request.acl.threads.filter_threads(self.request, self.forum, Thread.objects.filter(forum=self.forum))
  11. self.count = queryset.count()
  12. self.pagination = make_pagination(self.kwargs.get('page', 0), self.count, self.request.settings.threads_per_page)
  13. if self.request.settings.avatars_on_threads_list:
  14. queryset = queryset.prefetch_related('start_poster', 'last_poster')
  15. tracker = ThreadsTracker(self.request, self.forum)
  16. for thread in queryset[self.pagination['start']:self.pagination['stop']]:
  17. thread.is_read = tracker.is_read(thread)
  18. self.threads.append(thread)