Commit 884855c1 authored by Sli's avatar Sli Committed by Skia

forum and core: remove CanViewSearchMixin and use specialized view instead

parent 1de77f2f
......@@ -201,29 +201,6 @@ class CanViewMixin(View):
return super(CanViewMixin, self).dispatch(request, *arg, **kwargs)
class CanViewSearchMixin(View):
"""
This view removes all forbidden content from a SearchQuerySet
"""
def dispatch(self, request, *arg, **kwargs):
queryset = self.get_queryset()
excluded = [
o.object.id for o in queryset if not can_view(o.object, request.user)
]
self._queryset = queryset
def get_qs(self2):
q = self2._queryset.exclude(id__in=excluded)
resp = [r.object for r in q]
return resp
self.get_queryset = types.MethodType(get_qs, self)
return super(CanViewSearchMixin, self).dispatch(request, *arg, **kwargs)
class FormerSubscriberMixin(View):
"""
This view check if the user was at least an old subscriber
......
......@@ -331,9 +331,9 @@ class ForumMessage(models.Model):
return user.can_edit(self.topic.forum)
def can_be_viewed_by(self, user):
return not self._deleted and self.topic.can_be_viewed_by(
user
) # Useful in search engine
# No need to check the real rights since it's already done by the Topic view
# and it impacts performances too much
return not self._deleted
def can_be_moderated_by(self, user):
return self.topic.forum.is_owned_by(user) or user.id == self.author.id
......
......@@ -42,19 +42,26 @@ from core.views import (
CanEditMixin,
CanEditPropMixin,
CanCreateMixin,
CanViewSearchMixin,
can_view,
)
from core.views.forms import MarkdownInput
from forum.models import Forum, ForumMessage, ForumTopic, ForumMessageMeta
from haystack.query import SearchQuerySet
class ForumSearchView(CanViewSearchMixin, ListView):
class ForumSearchView(ListView):
template_name = "forum/search.jinja"
def get_queryset(self):
query = self.request.GET.get("query", "")
return SearchQuerySet().models(ForumMessage).autocomplete(auto=query)
queryset = SearchQuerySet().models(ForumMessage).autocomplete(auto=query)
excluded = [
o.object.id
for o in queryset
if not can_view(o.object.topic, self.request.user)
]
queryset.exclude(id__in=excluded)
return [r.object for r in queryset]
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