search.py 885 B

123456789101112131415161718192021222324252627
  1. from misago.decorators import block_crawlers
  2. from misago.models import Post
  3. from misago.apps.errors import error404
  4. from misago.apps.search.views import do_search, results
  5. def allow_search(f):
  6. def decorator(*args, **kwargs):
  7. request = args[0]
  8. if not (request.acl.private_threads.can_participate()
  9. and request.settings['enable_private_threads']):
  10. return error404()
  11. return f(*args, **kwargs)
  12. return decorator
  13. @block_crawlers
  14. @allow_search
  15. def search_private_threads(request):
  16. threads = [t.pk for t in request.user.private_thread_set.all()]
  17. queryset = Post.objects.filter(thread_id__in=threads)
  18. return do_search(request, queryset, 'private_threads')
  19. @block_crawlers
  20. @allow_search
  21. def show_private_threads_results(request, page=0):
  22. return results(request, page, 'private_threads')