From 6ca8e7e4cca298de9f020d022eed99d41ec82cd4 Mon Sep 17 00:00:00 2001 From: Christophe Siraut Date: Thu, 7 Nov 2024 10:12:11 +0100 Subject: [PATCH] aircox/views/episode: when creating an episode redirect to edit view --- aircox/views/episode.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/aircox/views/episode.py b/aircox/views/episode.py index f9d2dfc..9773b49 100644 --- a/aircox/views/episode.py +++ b/aircox/views/episode.py @@ -1,7 +1,8 @@ from django.contrib.auth.mixins import UserPassesTestMixin -from django.shortcuts import get_object_or_404 +from django.shortcuts import get_object_or_404, redirect from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from django.views.generic.base import View from aircox.models import Episode, Program, StaticPage, Track from aircox import forms, filters, permissions @@ -144,7 +145,14 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView): return resp -class EpisodeCreateView(EpisodeUpdateView): +class EpisodeCreateView(UserPassesTestMixin, View): + def get(self, request, **kwargs): + program = self.get_object() + episode = Episode.objects.create(program=program, title="%s (%s)" % (program.title, _("draft"))) + return redirect(reverse("episode-edit", kwargs={"pk": episode.pk})) + + def test_func(self): + return permissions.program.can(self.request.user, "update", self.get_object()) + def get_object(self): - program = get_object_or_404(Program, pk=self.kwargs["pk"]) - return Episode.objects.create(program=program, title="%s (%s)" % (program.title, _("draft"))) + return get_object_or_404(Program, pk=self.kwargs["pk"])