Commit e421a2b4 authored by Sli's avatar Sli Committed by Skia

forum: increase search speed by optimizing permission filter

parent a9bae46f
......@@ -43,7 +43,6 @@ from django.db.models import Count
from core.models import Group
from core.views.forms import LoginForm
from haystack.query import SearchQuerySet
def forbidden(request):
......
......@@ -56,10 +56,24 @@ class ForumSearchView(ListView):
query = self.request.GET.get("query", "")
if query == "":
return []
queryset = SearchQuerySet().models(ForumMessage).autocomplete(auto=query)[:100]
return [
r.object for r in queryset if can_view(r.object.topic, self.request.user)
][:30]
queryset = (
SearchQuerySet().models(ForumMessage).autocomplete(auto=query).load_all()
)
# Filter unauthorized responses
resp = []
count = 0
max_count = 30
for r in queryset:
if count >= max_count:
return resp
if can_view(r.object, self.request.user) and can_view(
r.object.topic, self.request.user
):
resp.append(r.object)
count += 1
return resp
class ForumMainView(ListView):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment