mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 06:03:20 +00:00
forum and core: remove CanViewSearchMixin and use specialized view instead
This commit is contained in:
parent
1de77f2fdd
commit
884855c178
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user