search.py 803 B

123456789101112131415161718192021222324
  1. from misago.models import Post
  2. from misago.acl.exceptions import ACLError404
  3. from misago.apps.search.views import SearchBaseView, ResultsBaseView
  4. class SearchPrivateThreadsMixin(object):
  5. search_route = 'private_threads_search'
  6. results_route = 'private_threads_results'
  7. def check_acl(self):
  8. if not (self.request.acl.private_threads.can_participate()
  9. and self.request.settings['enable_private_threads']):
  10. raise ACLError404()
  11. def queryset(self):
  12. threads = [t.pk for t in self.request.user.private_thread_set.all()]
  13. return Post.objects.filter(thread_id__in=threads)
  14. class SearchView(SearchPrivateThreadsMixin, SearchBaseView):
  15. pass
  16. class ResultsView(SearchPrivateThreadsMixin, ResultsBaseView):
  17. pass