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 ...@@ -43,7 +43,6 @@ from django.db.models import Count
from core.models import Group from core.models import Group
from core.views.forms import LoginForm from core.views.forms import LoginForm
from haystack.query import SearchQuerySet
def forbidden(request): def forbidden(request):
......
...@@ -56,10 +56,24 @@ class ForumSearchView(ListView): ...@@ -56,10 +56,24 @@ class ForumSearchView(ListView):
query = self.request.GET.get("query", "") query = self.request.GET.get("query", "")
if query == "": if query == "":
return [] return []
queryset = SearchQuerySet().models(ForumMessage).autocomplete(auto=query)[:100] queryset = (
return [ SearchQuerySet().models(ForumMessage).autocomplete(auto=query).load_all()
r.object for r in queryset if can_view(r.object.topic, self.request.user) )
][:30]
# 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): 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