importantposts.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from django.core.exceptions import PermissionDenied
  2. from django.utils.translation import ugettext as _
  3. from misago.threads.permissions import exclude_invisible_posts
  4. from misago.threads.views.generic.base import ViewBase
  5. __all__ = ['ModeratedPostsView', 'ReportedPostsView']
  6. class ModeratedPostsView(ViewBase):
  7. template = ''
  8. def allow_action(self, forum):
  9. pass
  10. def filter_posts_queryset(self, queryset):
  11. return queryset.filter(is_moderated=True)
  12. def dispatch(self, request, *args, **kwargs):
  13. relations = ['forum']
  14. thread = self.fetch_thread(request, select_related=relations, **kwargs)
  15. forum = thread.forum
  16. self.check_forum_permissions(request, forum)
  17. self.check_thread_permissions(request, thread)
  18. self.allow_action(forum)
  19. if not request.is_ajax():
  20. response = render(request, 'misago/errorpages/wrong_way.html')
  21. response.status_code = 405
  22. return response
  23. queryset = exclude_invisible_posts(
  24. thread.post_set, request.user, forum)
  25. queryset = self.filter_posts_queryset(queryset)
  26. return self.render(request, {
  27. 'forum': forum,
  28. 'thread': get_forum_path(forum),
  29. 'posts_count': queryset.count(),
  30. 'posts': queryset.order_by('-id')[:15]
  31. })
  32. class ReportedPostsView(ModeratedPostsView):
  33. pass