Commit aded5116 by Benjamin Richter

% fix haystack search query (request.group not set and should be list of all groups)

parent bddeb12b
from haystack.backends import SQ
from wiki.views.article import SearchView
from haystack.query import SearchQuerySet
from haystack.inputs import AutoQuery
from wiki.core import permissions
from wiki import models
class HaystackSearchView(SearchView):
template_name = 'wiki/plugins/haystack/search.html'
......@@ -11,20 +13,18 @@ class HaystackSearchView(SearchView):
def get_queryset(self):
qs = SearchQuerySet().all()
if self.request.user.is_authenticated():
# TODO: This has a leak! It should say:
# group=self.request.group.id AND group_read=True
if not permissions.can_moderate(models.URLPath.root().article,
self.request.user):
qs = qs.filter_or(
owner=self.request.user.id,
group=self.request.group.id,
other_read=True
if not permissions.can_moderate(models.URLPath.root().article, self.request.user):
qs = qs.filter(
SQ(owner_id=self.request.user.id) |
(
SQ(group_id__in=self.request.user.groups.values_list('id', flat=True))
& SQ(group_read=True)
) |
SQ(other_read=True)
)
else:
qs = qs.exclude(other_read=False)
qs = qs.filter(content=AutoQuery(self.query))
qs = qs.exclude(other_read=False)
qs = qs.load_all()
return qs
\ No newline at end of file
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