misc: enable adding new episodes

This commit is contained in:
Chris Tactic 2024-11-07 08:09:13 +01:00
parent 2a594821bb
commit fe424e9d9d
3 changed files with 14 additions and 0 deletions

View File

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

View File

@ -127,6 +127,9 @@ urls = [
# ---- dashboard # ---- dashboard
path(_("dashboard/"), views.dashboard.DashboardView.as_view(), name="dashboard"), path(_("dashboard/"), views.dashboard.DashboardView.as_view(), name="dashboard"),
path(_("dashboard/program/<pk>/"), views.program.ProgramUpdateView.as_view(), name="program-edit"), path(_("dashboard/program/<pk>/"), views.program.ProgramUpdateView.as_view(), name="program-edit"),
path(
_("dashboard/program/<pk>/add-episode/"), views.episode.EpisodeCreateView.as_view(), name="program-add-episode"
),
path(_("dashboard/episodes/<pk>/"), views.episode.EpisodeUpdateView.as_view(), name="episode-edit"), path(_("dashboard/episodes/<pk>/"), views.episode.EpisodeUpdateView.as_view(), name="episode-edit"),
path(_("dashboard/statistics/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"), path(_("dashboard/statistics/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),
path(_("dashboard/statistics/<date:date>/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"), path(_("dashboard/statistics/<date:date>/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),

View File

@ -1,5 +1,7 @@
from django.contrib.auth.mixins import UserPassesTestMixin from django.contrib.auth.mixins import UserPassesTestMixin
from django.shortcuts import get_object_or_404
from django.urls import reverse from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from aircox.models import Episode, Program, StaticPage, Track from aircox.models import Episode, Program, StaticPage, Track
from aircox import forms, filters, permissions from aircox import forms, filters, permissions
@ -12,6 +14,7 @@ __all__ = (
"EpisodeDetailView", "EpisodeDetailView",
"EpisodeListView", "EpisodeListView",
"PodcastListView", "PodcastListView",
"EpisodeCreateView",
"EpisodeUpdateView", "EpisodeUpdateView",
) )
@ -139,3 +142,9 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
if invalid: if invalid:
return self.get(request, **formsets) return self.get(request, **formsets)
return resp return resp
class EpisodeCreateView(EpisodeUpdateView):
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")))