mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 06:03:20 +00:00
forum: increase search speed by optimizing permission filter
This commit is contained in:
parent
a9bae46f45
commit
e421a2b4cd
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user