From 2cba2c4681665a3608051546343bf5bfa3667fbf Mon Sep 17 00:00:00 2001 From: Christophe Siraut Date: Tue, 12 Nov 2024 12:43:49 +0100 Subject: [PATCH] aircox/views/episode_detail: when episode page is unpublished and user not authorized, redirect to parent page --- aircox/views/episode.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/aircox/views/episode.py b/aircox/views/episode.py index 27abd34..1eb80ba 100644 --- a/aircox/views/episode.py +++ b/aircox/views/episode.py @@ -1,5 +1,5 @@ from django.contrib.auth.mixins import UserPassesTestMixin -from django.http import HttpResponseRedirect +from django.http import Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -47,6 +47,17 @@ class EpisodeDetailView(PageDetailView): return HttpResponseRedirect(reverse("program-detail", kwargs={"slug": episode.program.slug})) return qs + def get(self, *args, **kwargs): + """When episode is unpublished and user not authorized, redirect to + parent page.""" + try: + self.object = super().get_object(*args, **kwargs) + except Http404: + episode = get_object_or_404(Episode, slug=self.kwargs["slug"]) + return HttpResponseRedirect(reverse("program-detail", kwargs={"slug": episode.program.slug})) + context = self.get_context_data(object=self.object) + return self.render_to_response(context) + @attach class EpisodeListView(PageListView):