moderatedcontent.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from django.core.exceptions import PermissionDenied
  2. from django.utils.translation import ugettext as _
  3. from misago.core.uiviews import uiview
  4. from misago.users.decorators import deny_guests
  5. from misago.threads.views.generic.threads import Threads, ThreadsView
  6. from misago.threads.models import Thread
  7. from misago.threads.permissions import exclude_invisible_threads
  8. class ModeratedContent(Threads):
  9. def get_queryset(self):
  10. queryset = Thread.objects.filter(has_moderated_posts=True)
  11. queryset = queryset.select_related('forum')
  12. queryset = exclude_invisible_threads(queryset, self.user)
  13. return queryset
  14. class ModeratedContentView(ThreadsView):
  15. link_name = 'misago:moderated_content'
  16. template = 'misago/threads/moderated.html'
  17. Threads = ModeratedContent
  18. def process_context(self, request, context):
  19. context['show_threads_locations'] = True
  20. if request.user.moderated_content != context['threads_count']:
  21. request.user.moderated_content.set(context['threads_count'])
  22. return context
  23. def dispatch(self, request, *args, **kwargs):
  24. if request.user.is_anonymous():
  25. message = _("You have to sign in to see list of "
  26. "moderated content.")
  27. raise PermissionDenied(message)
  28. if not request.user.acl['moderated_forums']:
  29. message = _("You can't review moderated content.")
  30. raise PermissionDenied(message)
  31. return super(ModeratedContentView, self).dispatch(
  32. request, *args, **kwargs)
  33. @uiview("moderated_content")
  34. @deny_guests
  35. def event_sender(request, resolver_match):
  36. if request.user.acl['moderated_forums']:
  37. return int(request.user.moderated_content)
  38. else:
  39. return 0