aircox/views/episode: redirect to edit view when adding an episode

This commit is contained in:
Chris Tactic 2024-11-07 10:12:11 +01:00
parent 129360f89d
commit 529ed25d7f
2 changed files with 14 additions and 4 deletions

View File

@ -8,7 +8,7 @@
{% block page-form-actions %}
<a class="button secondary withmargin" href="{% url 'episode-list' parent_slug=object.slug %}">{% trans "Episodes" %}</a>
<a class="button secondary withmargin" href="{% url 'program-add-episode' object.pk %}">{% trans "New episode" %}</a>
<a class="button secondary withmargin" href="{% url 'program-add-episode' object.pk %}" target="_self">{% trans "New episode" %}</a>
{% if object and object.pk and request.user.is_superuser %}
<button type="button"
class="button secondary withmargin"

View File

@ -1,7 +1,9 @@
from django.contrib.auth.mixins import UserPassesTestMixin
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
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 +146,15 @@ 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 HttpResponseRedirect(reverse("episode-edit", kwargs={"pk": episode.pk}))
def test_func(self):
program = self.get_object()
return permissions.program.can(self.request.user, "update", program)
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"])