1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- from django.core.exceptions import PermissionDenied
- from django.utils.translation import ugettext as _
- from misago.core.errorpages import not_allowed
- from misago.threads.views.generic.base import ViewBase
- __all__ = ['ModeratedPostsListView', 'ReportedPostsListView']
- class ModeratedPostsListView(ViewBase):
- template = 'misago/thread/gotolists/moderated.html'
- def allow_action(self, thread):
- if not thread.acl['can_review']:
- message = _("You don't have permission to review moderated posts.")
- raise PermissionDenied(message)
- def filter_posts_queryset(self, queryset):
- return queryset.filter(is_moderated=True)
- def dispatch(self, request, *args, **kwargs):
- if not request.is_ajax():
- return not_allowed(request)
- relations = ['forum']
- thread = self.fetch_thread(request, select_related=relations, **kwargs)
- forum = thread.forum
- self.check_forum_permissions(request, forum)
- self.check_thread_permissions(request, thread)
- self.allow_action(thread)
- posts_qs = self.exclude_invisible_posts(
- thread.post_set, request.user, forum, thread)
- posts_qs = self.filter_posts_queryset(posts_qs)
- final_posts_qs = posts_qs.select_related('poster').order_by('-id')[:15]
- return self.render(request, {
- 'forum': forum,
- 'thread': thread,
- 'posts_count': posts_qs.count(),
- 'posts': final_posts_qs.iterator()
- })
- class ReportedPostsListView(ModeratedPostsListView):
- template = 'misago/thread/gotolists/reported.html'
- def allow_action(self, thread):
- if not thread.acl['can_see_reports']:
- message = _("You don't have permission to see reports.")
- raise PermissionDenied(message)
- def filter_posts_queryset(self, queryset):
- return queryset.filter(has_reports=True)
|