From 22b510e25bc3375491eaba09a45843e40144a57c Mon Sep 17 00:00:00 2001 From: imperosol Date: Fri, 9 Oct 2026 16:09:54 +0200 Subject: [PATCH] short-circuit `ForumMessageView` redirection on 403 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quand on accède à cette vue, on est immédiatement redirigé vers le topic correspondant (quitte à se faire 403 une fois arrivé là). Comme la redirection est une opération qui a un cout, on peut gagner du temps en mettant un PermissionDenied directement (d'autant plus que les bots aiment beaucoup rechercher les messages du forum, et qu'ils se font systématiquement 403) --- forum/views.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/forum/views.py b/forum/views.py index 3bd786d9..ae5e3750 100644 --- a/forum/views.py +++ b/forum/views.py @@ -346,13 +346,16 @@ class ForumTopicDetailView(CanViewMixin, DetailView): return kwargs -class ForumMessageView(SingleObjectMixin, RedirectView): +class ForumMessageView(SingleObjectMixin, UserPassesTestMixin, RedirectView): model = ForumMessage pk_url_kwarg = "message_id" permanent = False - def get_redirect_url(self, *args, **kwargs): + def test_func(self) -> bool: self.object = self.get_object() + return self.request.user.can_view(self.object) + + def get_redirect_url(self, *args, **kwargs): return self.object.get_url()