forked from rc/aircox
misc: enable adding new episodes
This commit is contained in:
parent
2a594821bb
commit
fe424e9d9d
|
@ -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>
|
||||||
|
|
||||||
|
<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 %}
|
||||||
|
|
||||||
<button type="button"
|
<button type="button"
|
||||||
|
|
|
@ -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"),
|
||||||
|
|
|
@ -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")))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user