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