privatethreads.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.utils.translation import ugettext as _
  2. from misago.forums.models import Forum
  3. from misago.threads.permissions import (allow_use_private_threads,
  4. exclude_invisible_private_threads)
  5. from misago.threads.views import generic
  6. class PrivateThreads(generic.Threads):
  7. def get_queryset(self):
  8. threads_qs = Forum.objects.private_threads().thread_set
  9. return exclude_invisible_private_threads(threads_qs, self.user)
  10. class PrivateThreadsFiltering(generic.ThreadsFiltering):
  11. def get_available_filters(self):
  12. filters = super(PrivateThreadsFiltering, self).get_available_filters()
  13. if self.user.acl['can_moderate_private_threads']:
  14. filters.append({
  15. 'type': 'reported',
  16. 'name': _("With reported posts"),
  17. 'is_label': False,
  18. })
  19. return filters
  20. class PrivateThreadsView(generic.ThreadsView):
  21. link_name = 'misago:private_threads'
  22. template = 'misago/privatethreads/list.html'
  23. Threads = PrivateThreads
  24. Filtering = PrivateThreadsFiltering
  25. def dispatch(self, request, *args, **kwargs):
  26. allow_use_private_threads(request.user)
  27. return super(PrivateThreadsView, self).dispatch(
  28. request, *args, **kwargs)